【发布时间】:2016-07-13 17:47:53
【问题描述】:
我有一个后台工作人员,我想在工作人员完成之前显示加载 gif。
我的问题是我无法使用
while(worker.IsBusy)
Thread.Sleep(50);
因为这会阻止 UI 线程和我的 GIF 更新它的帧。
使用 AutoResetEvent 和 myAutoResetEvent.WaitOne();
您知道如何等待 Backgroundworker 完成并仍然能够显示 GIF 吗?
【问题讨论】:
-
如果你想等到加载结束,为什么要使用 BackgroundWorker?
-
使用 BackgroundWorker 的全部目的是防止 UI 阻塞。你到底为什么要故意引起后台线程旨在防止的问题?你需要重新考虑这个问题,因为启动一个线程来防止阻塞然后故意阻塞是不合适的设计。
-
使用 BackgroundWorker 因为我想在代码执行时显示加载中的 GIF。如果我不使用 BackgroundWorker 进行工作,UI 将冻结并显示不加载 GIF。但我希望在 Worker 工作时显示这个 gif。
-
您可以让您的后台工作人员设置一个属性,您的 UI 的部分绑定到该属性以知道大部分 UI 应该被禁用,并且您还可以使用该属性来知道何时在另一个中显示 GIF任务/后台工作人员。这样,后台工作人员正在做一些事情,但您的窗口不会在显示 GIF 时冻结。
-
不要在问题中编辑答案。
标签: c# multithreading backgroundworker gif