Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.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# 使用WPF的串行通信中的挂起问题_C# - Fatal编程技术网

C# 使用WPF的串行通信中的挂起问题

C# 使用WPF的串行通信中的挂起问题,c#,C#,目前正在开发的应用程序能够使用支持串行通信的测试仪器进行读写 使用能够执行读写操作的线程,当应用程序执行超过2小时时,应用程序就会挂断。正常读写操作执行如下: 打开串行通信 执行读或写操作 关闭串行通信 要执行任何UI更新,请使用以下语法 RichTextBoxControl.Dispatcher.Invoke( new Common.DisplayActualResult(uiDisplay.Display), new object[] { a

目前正在开发的应用程序能够使用支持串行通信的
测试仪器进行读写

使用能够执行读写操作的线程,当应用程序执行超过2小时时,应用程序就会挂断。正常读写操作执行如下:

  • 打开串行通信
  • 执行读或写操作
  • 关闭串行通信
要执行任何UI更新,请使用以下语法

RichTextBoxControl.Dispatcher.Invoke(
    new Common.DisplayActualResult(uiDisplay.Display), 
    new object[] 
    { 
        analyzerDisplay 
    }
);

您能否根据性能和加载情况建议临时编写应用程序的方法。

在挂起进程上附加一个调试器并检查使用过的线程,或者使用探查器查看代码当前执行的操作(当问题在超过2小时后发生时,这可能很困难),使用Invoke()而不是BeginInvoke()这确实是一个很好的引发僵局的方法。您可能会在Close()调用中看到UI线程死锁。没有明显的理由需要在代码段中使用Invoke visible,因为您没有使用它的返回值。对于500个测试用例,需要2000个调用。用于调用基于传递的参数更新UI的同步调用。