首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Windows窗体中获取多个UI线程?

如何在Windows窗体中获取多个UI线程?
EN

Stack Overflow用户
提问于 2017-12-26 23:52:14
回答 3查看 0关注 0票数 0

我正在设法使用户控件在他们自己的UI线程中运行。这有可能吗?我试图防止一个基于模块的应用程序因为单个模块而崩溃。

有什么想法吗?

EN

回答 3

Stack Overflow用户

发布于 2017-12-27 07:46:51

那是不可能的。但是,使用一些代码,你可以在不同的线程中运行不同的窗口。每个窗口都有自己的消息循环。

最新情况:

另一种你能想到的方法是用一种特殊的方式写你的控件。你可以通过创建将运行所有逻辑的新线程来处理控件中的所有事件。

票数 0
EN

Stack Overflow用户

发布于 2017-12-27 08:49:48

不幸的是,所有UI控件都运行在同一个UI线程上。因此,在这个线程上运行的任何可能导致挂起情况的代码都需要使用某种超时逻辑进行编码。

代码语言:javascript
复制
DateTime startTime = DateTime.Now;
while(DateTime.Now.Subtract(startTime).TotalSeconds < 30)
{
     //do something
}

否则,正如Orlanguage前面所述,所有事件处理程序代码都需要在单独的线程中运行。但是,您仍然需要监视这些线程,以确定它们是否运行时间过长并关闭它们。因此,你最好实现上面的逻辑类型,因为它将减少工作量和更易于维护。

票数 0
EN

Stack Overflow用户

发布于 2017-12-27 09:48:56

我想这不是程序崩溃的问题。当然,例外情况是可以捕捉到的,但问题在于悬挂控制。为了解决这种情况,下面是一个例子:

代码语言:javascript
复制
public void Button1_Click(object sender, EventArgs args)
{
     while(true) {}
}

如果该代码在控件中运行,则异常不会抛出,但会挂起。我正在尝试确定一种方法来捕捉这个问题,并将控制模块从应用程序中删除。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100000011

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档