如何在 WinForms 中正确创建线程 GUI 应用程序?
我来自 C 背景,目前我想制作一个小型 WinForms 实用程序,它具有响应式 GUI 和长时间运行的工作线程。
GUI 是常规的 Form1 派生内容,带有进度指示器和内容,工作线程属于 new System.Threading.Thread();
类型。
在 C++ 中一切都很简单,在 .NET 中我不知道该怎么做。
是否有一种 PostMessage 类型的数据更新方式?我是否在主线程上启动一个读取共享锁保护结构的计时器,还有其他方法吗?看到了有关代表的多个文档,但在 10 篇不同的文章之后,它们似乎不起作用,也许是因为我有 Worker<->GUI 关系,而不是 GUI<->GUI 关系。
所有 GUI 内容都在 GUI 类中,所有工作人员内容都在其自己的工作人员类中。管理世界中的最佳实践是什么?
I'm from C background, and currently I want to make a small WinForms utility that has responsive GUI, and long running worker thread.
GUI is regular Form1 derived stuff, with progress indicators and stuff, worker thread is of kind new System.Threading.Thread();
.
In C++ everything is simple, in .NET I have no clue what to do.
Is there a PostMessage kind of way for data updates? Do I kick a Timer on the main thread that reads shared lock protected structure, is there another approach? Saw multiple documents on delegates, but after 10 different articles they doesn't seem to work, maybe because I have a Worker<->GUI relation, not a GUI<->GUI relation.
All GUI stuff is in GUI class, all worker stuff is in its own worker class. What are the best practices in managed world?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
有很多方法,但很简单,
另外 BackgroundWorker 提供了一种更简单的方法。
There are many ways, but simply,
Also BackgroundWorker provides an easier approach.
这是 WinForms 应用程序中的程序类
,这里只有一个线程
[STAThread]
您可以使用
[MTAThread]
代替它,以便可以处理或创建 多个线程使用 System.Threading 线程化运行时
this is the program class in WinForms Application
here there is only a single thread
[STAThread]
you can use
[MTAThread]
instead of it so multiple threads can be handledor can create thread a runtime using
System.Threading
System.Threading.Tasks
)System.Threading.Tasks
)