【发布时间】:2012-09-24 15:42:28
【问题描述】:
我对 Windows 窗体有点陌生。我创建的 Windows 窗体应用程序是执行非常耗时的数据转换任务的组件的前端。数据转换任务发出表单订阅的事件。
当表单接收到事件时,它会更改标签中的文本并为该标签调用Refresh()。
当我从表单运行该过程时,它会保持响应并更新标签文本可能一分钟左右。之后,它只是冻结,Windows 将进程声明为“无响应”,直到数据转换完成,此时表单解冻并且标签显示数据转换已完成(如预期的那样)。
我没有将数据转换放到一个单独的线程中 - 这是我应该尝试的第一件事吗?事件可以跨线程吗?如果没有,我还应该怎么做?
【问题讨论】:
-
你能展示一些你的代码吗..?这是您可以使用 Threading 完成的事情吗?
-
.NET 的哪个版本?较新的版本具有可用于线程的附加选项。无论如何,是的,线程是您的第一选择。有关想法,请参阅此帖子。 stackoverflow.com/questions/464338/…
-
.NET 4. 我看不出为什么不能在另一个线程上完成这项工作。它从文本文件中读取数据,对其进行转换,然后将其写入其他文本文件。