【发布时间】:2011-04-30 20:47:47
【问题描述】:
我是 C# 和多线程的新手,所以如果这是一个重复的问题,我深表歉意,但作为一个新手,我的问题似乎与我读过的其他问题略有不同。
我的 GUI 在一个(主)线程中运行。它调用在单独线程中运行的后台任务(在 dll 中——我也在编写)。 dll 不了解 GUI(即它不能引用 GUI 类)。
现在,假设我想根据 dll 线程的状态更新 GUI 上的进度条 -> 我正在做的是在 dll 中创建一个事件,每 X% 都会触发并且 GUI 将订阅到这个事件。触发事件时,GUI 将更新进度条。
我的问题:
- 创建事件的方法是不是最好的方法(记住 dll 不能引用 GUI)?
- 如何确保我的上述方法是“事件安全”的?我应该在事件中传递进度百分比以确保线程安全还是还有更多?
- 更新 GUI 时是否需要使用 Invoke?我看到一个帖子建议我这样做,但我不明白为什么,因为更新栏是在 GUI 线程中完成的??!
希望你能帮我澄清一下!
谢谢
【问题讨论】:
-
“事件安全”是什么意思?
-
在此处查看
BackgroundWorker类的 cmets:stackoverflow.com/questions/1506838/… -
我只想对所有回复表示感谢。他们都帮助回答了我的问题。很高兴看到这样的帮助!
标签: c# multithreading