隐藏表单时网络类冻结

时间:2013-06-09 15:24:17

标签: c#

所以我有frmMainMenu表单和frmMainGame表单。

我有一个使用委托隐藏主菜单的功能,并显示frmMainGame

在我的 program.cs 中,我声明了一个Network类 (Program.Network)

每当我隐藏frmMainMenu时,网络类基本上都会等待再次显示菜单。即使隐藏frmMainMenu,我也需要运行网络类。

我将通过套接字向网络类发送数据包,在关闭frmMainGame并显示frmMainMenu之前不会发生任何事情,然后会显示该消息。为什么会这样?

2 个答案:

答案 0 :(得分:0)

我猜你使用主线程进行网络连接,而没有ui,消息队列会等到有东西显示出来。

here是使用默认线程池在后台线程中执行操作的示例。

这也是一个名为BackgroundWorker的好类,可以用来向ui报告进度。

答案 1 :(得分:0)

您基本上必须创建一个新线程:

public static System.Threading.Thread Network;

static void Main()
{
    Network = new System.Threading.Thread(NetworkMethod);  // Insert Name of your method here
    Network.Start();

    // Run your normal application
}
static void NetworkMethod()
{
    // Do stuff that would block the UI
}