我有一个应用程序读取主窗体上的数据以及弹出窗口。在我的应用程序主窗体上,我正在阅读ASCII中的实时串行通信。在我的弹出窗口中,我的程序正在分析这些数据并捕获通过/失败情况。Windows窗体在程序执行过程中卡住
当我执行我的程序时,它按预期工作。但是,在程序运行时(需要大约2分钟才能完成),我无法在屏幕上移动弹出窗口或最小化主应用程序窗口。就好像它们在操作完成之前一直卡住。我没有收到“没有反应”的信息,并试图找出如何在操作过程中移动/最小化/关闭窗口。
是多线程的答案?任何帮助表示赞赏。
我有一个应用程序读取主窗体上的数据以及弹出窗口。在我的应用程序主窗体上,我正在阅读ASCII中的实时串行通信。在我的弹出窗口中,我的程序正在分析这些数据并捕获通过/失败情况。Windows窗体在程序执行过程中卡住
当我执行我的程序时,它按预期工作。但是,在程序运行时(需要大约2分钟才能完成),我无法在屏幕上移动弹出窗口或最小化主应用程序窗口。就好像它们在操作完成之前一直卡住。我没有收到“没有反应”的信息,并试图找出如何在操作过程中移动/最小化/关闭窗口。
是多线程的答案?任何帮助表示赞赏。
您将需要使用多线程,或者可能需要一些异步/等待操作。
http://msdn.microsoft.com/en-us/library/ms173178.aspx
http://msdn.microsoft.com/en-us/library/vstudio/hh191443(v=vs.110).aspx
希望这有助于!
您正在阻止用户界面。你应该在一个单独的线程上完成这种工作。使用'BackgroundWorker'。 – etaiso
是的,主线程被锁定,所以你想要去使用后台线程 –
粗略猜测是你通过调用你的DataReceived事件处理程序的BeginInvoke()方法来触发UI线程。 –