Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ReadAsync-线程已退出,代码为259_C#_Multithreading_Sockets_Windows Phone 8_Bluetooth - Fatal编程技术网

C# ReadAsync-线程已退出,代码为259

C# ReadAsync-线程已退出,代码为259,c#,multithreading,sockets,windows-phone-8,bluetooth,C#,Multithreading,Sockets,Windows Phone 8,Bluetooth,我的蓝牙连接有问题。这是无止境的连接,几秒钟后,它总是挂断在ReadAsync上,并显示以下信息: 线程0x19c已退出,代码为259(0x103)。 程序“[5612]TaskHost.exe”已退出,代码为0(0x0) 在此之后-设备的连接仍然有效(我看到设备上的连接二极管),但没有机会: 1) 再次连接到设备(连接仍然存在) 2) 从套接字/连接接收任何数据 它总是挂在这里: returnedBuffer = await

我的蓝牙连接有问题。这是无止境的连接,几秒钟后,它总是挂断在ReadAsync上,并显示以下信息:

线程0x19c已退出,代码为259(0x103)。 程序“[5612]TaskHost.exe”已退出,代码为0(0x0)

在此之后-设备的连接仍然有效(我看到设备上的连接二极管),但没有机会: 1) 再次连接到设备(连接仍然存在) 2) 从套接字/连接接收任何数据

它总是挂在这里:

   returnedBuffer =
                await
                    socket.InputStream.ReadAsync(buffer.AsBuffer(), (uint)buffer.Length,
                        InputStreamOptions.Partial);
Modyfied代码来自32英尺样本:

    private async void Button_Click_1(object sender, RoutedEventArgs e)
    {
        var bdp = new BluetoothDevicePicker();
        PeerInformation pi = await bdp.PickDeviceAsync();
        if (pi != null)
        {
            var hn = new HostName(pi.HostName.RawName);

            // do something with the device
            ReadThread(hn);
        }
    }

    private async void ReadThread(object host)
{
    reading = true;

    var socket = new StreamSocket();
    socket.Control.KeepAlive = true;
    socket.Control.NoDelay = false;
    //socket.Control.QualityOfService = SocketQualityOfService.LowLatency;

    IAsyncAction a = StreamSocketExtensions.ConnectAsync(socket, (HostName)host, RfcommServiceId.SerialPort);
    await a;

    var buffer = new byte[2048];

    while (reading)
    {
        IBuffer returnedBuffer = null;
        try
        {
            returnedBuffer =
                await
                    socket.InputStream.ReadAsync(buffer.AsBuffer(), (uint)buffer.Length,
                        InputStreamOptions.Partial);
            if (returnedBuffer != null)
            {

                string s = PrintByteArray(returnedBuffer.ToArray(), (int)returnedBuffer.Length);

                if (!string.IsNullOrEmpty(s))
                {


                    Dispatcher.BeginInvoke(new Action<string>(InsertMessage), s);


                }
            }
        }
        catch
        {

        }

    }

    socket.Dispose();
}
private async void按钮\u单击\u 1(对象发送方,RoutedEventArgs e)
{
var bdp=新的BluetoothDevicePicker();
PeerInformation pi=wait bdp.PickDeviceAsync();
如果(pi!=null)
{
var hn=新主机名(pi.HostName.RawName);
//用这个设备做些什么
读取线程(hn);
}
}
私有异步void ReadThread(对象主机)
{
阅读=正确;
var socket=新的StreamSocket();
socket.Control.KeepAlive=true;
socket.Control.NoDelay=false;
//socket.Control.QualityOfService=SocketQualityOfService.lowlatence;
IAsyncation a=StreamSocketExtensions.ConnectAsync(套接字,(主机名)主机,RfcommServiceId.SerialPort);
等待时机;
var buffer=新字节[2048];
边读
{
IBuffer returnedBuffer=null;
尝试
{
返回缓冲区=
等候
socket.InputStream.ReadAsync(buffer.AsBuffer(),(uint)buffer.Length,
InputStreamOptions.Partial);
if(returnedBuffer!=null)
{
字符串s=PrintByteArray(returnedBuffer.ToArray(),(int)returnedBuffer.Length);
如果(!string.IsNullOrEmpty)
{
Dispatcher.BeginInvoke(新操作(插入消息),s);
}
}
}
接住
{
}
}
socket.Dispose();
}

旁注:不要在文章标题中添加标签,而是添加签名编辑用户名。