Windows 10物联网中的SerialDevice处置方法在某些情况下不起作用

时间:2018-08-30 13:28:37

标签: uwp serial-port windows-10-iot-core

我已经开发了一个简单的UWP应用程序,可以通过串行端口进行通信。我正在使用 SerialDevice 类进行通信。如果我处理SerialDevice对象,则在从串行端口读取任何数据之前,它的处理方法可以正常工作 一旦我开始通过串行端口读取数据,然后如果我想断开与该设备的连接并处置SerialDevice对象,它将卡在dispose方法中。 以下是我用来读取,写入和断开连接的函数:

paste0("ADCY", 1:10)
[1] "ADCY1"  "ADCY2"  "ADCY3"  "ADCY4"  "ADCY5"  "ADCY6"  "ADCY7"  "ADCY8"  "ADCY9" 
[10] "ADCY10"

1 个答案:

答案 0 :(得分:0)

我在某些版本的Windows 10上挂起SerialDevice.Dispose()也遇到了问题(或者它可能与计算机硬件有关)。在研究了一般的Windows /串行端口问题之后,似乎挂起的原因是线程问题。通过在断开连接功能中执行此操作,我能够解决该问题:

    public void Disconnect()
    {
        :
        // Don't call dispose directly as it hangs on some computers
        // Calling this from a separate thread prevents it from hanging...
        Thread thr = new Thread(new ThreadStart(serialPortClose));
        thr.Start();
        :
    }


    void serialPortClose()
    {
        _serialDevice.Dispose();
        _serialDevice = null;
    }