rvk*_*rvk 1 c# asynchronous winforms progress-bar
我想制作一个进度条来跟踪我正在做的每个事件的状态,而不是一个静音程序或一个带控制台的程序.
事件:
等...
现在,在我完成其中一个任务之后,我将增加进度条以指示它已完成,并且我写入DataGridTable,状态已从"正在计算..."更改为"完成".
为简单起见,我说我有一个文件compute.cs和form.cs. 我的表单启动了,我按下'execute'运行compute.cs脚本,该脚本通过以下方式将其状态转发回表单:
compute.cs
form.SetStatus(eventId,eventStatus);
form.cs
委托void SetMetricStatusDelegate(字符串度量,字符串状态);
public void SetMetricStatus(字符串度量,字符串状态){...}
最后,问题.我运行我的程序,每个任务大约需要三秒钟才能完成,但进度条和表格没有更新.完成所有事件后,进度条和表格将正确更新.
使用C#表单上的进度条记录进度的正确方法是什么?
在执行长时间运行的任务时,UI画图暂停.
您需要生成与UI分开的线程来执行长任务.
请注意,从未创建它们的线程访问UI控件将引发异常.幸运的是,BackgroundWorker具有可在线程完成时订阅的事件.