Winforms windows窗体-窗体在执行耗时的操作时冻结

Winforms windows窗体-窗体在执行耗时的操作时冻结,winforms,events,Winforms,Events,我对Windows窗体有点陌生。我创建的Windows窗体应用程序是一个执行非常耗时的数据转换任务的组件的前端。数据转换任务发出表单订阅的事件 当表单接收到事件时,它会更改标签中的文本,并为该标签调用Refresh() 当我从表单运行该过程时,它会保持响应,并更新标签文本大约一分钟。之后,它只是冻结,Windows声明进程“无响应”,直到数据转换完成,此时表单解冻,标签显示数据转换已完成(如预期) 我还没有将数据转换放在单独的线程上-这是我应该尝试的第一件事吗?事件可以跨线程吗?如果没有,我还应

我对Windows窗体有点陌生。我创建的Windows窗体应用程序是一个执行非常耗时的数据转换任务的组件的前端。数据转换任务发出表单订阅的事件

当表单接收到事件时,它会更改标签中的文本,并为该标签调用
Refresh()

当我从表单运行该过程时,它会保持响应,并更新标签文本大约一分钟。之后,它只是冻结,Windows声明进程“无响应”,直到数据转换完成,此时表单解冻,标签显示数据转换已完成(如预期)


我还没有将数据转换放在单独的线程上-这是我应该尝试的第一件事吗?事件可以跨线程吗?如果没有,我还应该做什么?

是的,线程是您应该工作的地方。WinForms中的多线程可能很棘手,具体取决于您的版本

如果您使用的是.NET 4.0或更高版本,则可以使用

另外,C#Corner上有一篇很好的文章介绍了WinForms应用程序中的线程,我建议将其作为一个起点


是简化WinForms中线程的另一个选项。

是的,线程是您应该工作的地方。WinForms中的多线程可能很棘手,具体取决于您的版本

如果您使用的是.NET 4.0或更高版本,则可以使用

另外,C#Corner上有一篇很好的文章介绍了WinForms应用程序中的线程,我建议将其作为一个起点


这是在WinForms中简化线程的另一个选项。

能否显示一些代码。。?这是您可以使用线程来完成的吗?哪个版本的.NET?较新的版本有额外的选项可用于线程。无论如何,是的,线程是你的第一选择。请参阅本帖以了解想法。净4。我看不出为什么这项工作不能在另一个线程上完成。它从文本文件中读取数据,对其进行转换,并将其写入其他文本文件。您能展示一些代码吗。。?这是您可以使用线程来完成的吗?哪个版本的.NET?较新的版本有额外的选项可用于线程。无论如何,是的,线程是你的第一选择。请参阅本帖以了解想法。净4。我看不出为什么这项工作不能在另一个线程上完成。它从文本文件中读取数据,转换数据,并将其写入其他文本文件。你的链接是一大堆我一无所知的东西。你的帖子非常有帮助-谢谢。这就是我们来这里的原因。祝你好运你的链接是一大堆我一无所知的东西。你的帖子非常有帮助-谢谢。这就是我们来这里的原因。祝你好运