【发布时间】:2011-01-28 15:19:48
【问题描述】:
我正在尝试编写多线程代码并面临一些同步问题。我知道这里有很多帖子,但我找不到合适的。
我有一个System.Timers.Timer,它每 30 秒经过一次,它会进入数据库并检查是否有任何新作业。如果他找到一个,他会在当前线程上执行作业(计时器为每个经过的新线程打开)。在作业运行时,我需要将进度通知主线程(计时器所在的位置)。
注意事项:
- 我没有 UI,所以我不能像通常在 winforms 中那样做
beginInvoke(或使用后台线程)。 - 我想在我的主课上实现
ISynchronizeInvoke,但这看起来有点矫枉过正(也许我错了)。 - 我的作业类中有一个事件,主类注册到它,我会在需要时调用该事件,但我担心它可能会导致阻塞。
- 每个作业最多可能需要 20 分钟。
- 我最多可以同时运行 20 个作业。
我的问题是:
在我的工作线程中通知我的主线程任何进展的正确方法是什么?
感谢您的帮助。
【问题讨论】:
-
您无法通知线程。您可以通知一个对象。更好地描述这部分,你可能会得到更好的答案。
标签: c# multithreading synchronization