从单独的线程调用新表单,避免冻结表单

时间:2011-03-16 19:48:40

标签: c#

我目前正在创建一个聊天系统。客户端的接收端由一个单独的线程管理,这样当它从另一个客户端收到消息时,会加载一个带有发送者消息的新表单。问题是,新加载的表单被冻结并且没有响应[由于我使用的阻塞方法(?)]。我该如何解决这个问题?我是C#的新手,所以请输入代码段。

2 个答案:

答案 0 :(得分:1)

它被冻结是因为你在另一个线程上创建它并且该线程没有调用Application.Run()。这需要“抽取消息循环”。 More here

不要在另一个线程上创建窗口。使用BackgroundWorker或Control.BeginInvoke或Dispatcher.BeginInvoke让程序的UI线程创建窗口。

答案 1 :(得分:0)

我跟着这个后台工作者示例,其代码对我来说很有用。

http://msdn.microsoft.com/en-us/library/cc221403(v=vs.95).aspx