【发布时间】:2010-08-20 18:41:31
【问题描述】:
我有一个 Windows 应用程序,我已经在 c# Express 2008 中运行了一年,并且在过去几天一直在尝试将其转换为 2010 年。我遇到的问题是它是一个多线程应用程序,它具有每秒运行一系列代码。它的作用是有一个主线程,它调用 3 个工作线程,等待它们完成然后做一些额外的处理,休眠到 1 秒然后再次运行。
问题是部分代码可以调用需要 8 秒才能响应的 Web 服务,因此使用 ThreadPool.QueueUserWorkItem 调用这段代码。问题是在 2010 年运行时,当这部分代码被调用时,主线程继续运行,但是当它唤醒子线程时,它会挂起,直到 Threadpool 方法完成运行。
这在 2008 年从未发生过。有什么建议吗?到目前为止,我将那段代码放在它自己的线程中,而不是使用 Threadpool 但同样的问题。
【问题讨论】:
-
你能发布一个显示这个的代码示例吗?
-
几个问题。您是否更改了运行应用程序的 .Net 版本? VS 2008 默认使用 3.5,'10 使用 4.0,但是当项目升级时 VS 不会碰撞框架。此外,这是否仅在 VS 中运行时才会发生(大概是调试模式)?最后,正如 Mikael 建议的那样,一些复制问题的代码会有所帮助。
标签: c# multithreading visual-studio-express