操作标识符无效

时间:2015-02-02 22:53:46

标签: c# stream-socket-client

在我开始之前我只是想说我在寻找这个问题的解决方案已经有很长一段时间了,我找不到任何可以帮助我解决问题的方法。

我需要连接到某个服务器,发送消息并显示结果。它很简单,但它崩溃了,我不明白为什么。

这是代码

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);
        }
    }
}

在选定的行代码中崩溃和抛出&#34;操作标识符无效&#34;。我试着用 LoadAsync

做同样的事情
IAsyncOperation<uint> taskLoad = dataReader.LoadAsync(8196);
taskLoad .AsTask().Wait();

但它不起作用。 reading1Voltage 是XAML控件,TextBox。

此代码有什么问题?如何使其正常工作?

0 个答案:

没有答案