在我开始之前,我只想说我一直在寻找这个问题的解决方案,但我没有找到任何可以帮助我解决它的东西。
我需要连接到某个服务器,发送消息并显示结果。这很容易,但它崩溃了,我不知道为什么。
这是代码
private async void startMeasurementButton_Click(object sender, RoutedEventArgs e)
{
Debug.WriteLine("Reading start");
socket = new StreamSocket();
var hostName = new HostName("192.168.10.20");
await socket.ConnectAsync(hostName, "10000");
dataReader = new DataReader(socket.InputStream);
dataWriter = new DataWriter(socket.OutputStream);
dataReader.UnicodeEncoding = UnicodeEncoding.Utf8;
dataReader.ByteOrder = ByteOrder.LittleEndian;
dataReader.InputStreamOptions = InputStreamOptions.Partial;
isReading = true;
await Task.Run(() =>
{
Read();
});
}
这工作得很好,它连接到服务器并准备好使用。而且没有第二种方法
private async Task Read()
{
while (isReading)
{
try
{
dataWriter.WriteString("1");
await dataWriter.StoreAsync(); // <== here an exception occurs
await dataWriter.FlushAsync();
dataWriter.DetachStream();
IAsyncOperation<uint> taskLoad = dataReader.LoadAsync(8196);
taskLoad.AsTask().Wait();
uint bytesToRead = taskLoad.GetResults();
reading1Voltage.Text = bytesToRead.ToString();
}
catch (Exception e)
{
Debug.WriteLine("Error: " + e.Message);
}
}
}
在选定的行代码崩溃并抛出“操作标识符无效”。我尝试做与LoadAsync相同的事情
IAsyncOperation<uint> taskLoad = dataReader.LoadAsync(8196);
taskLoad .AsTask().Wait();
但它不起作用。reading1Voltage是 XAML 控件,TextBox。
这段代码有什么问题,我怎样才能让它工作?