【发布时间】:2017-11-26 22:07:53
【问题描述】:
我正在使用以下代码来调用应用程序中主 UI 线程上的控件。我的状态条中的进度条没有 InvokeRequired,我需要以某种方式调用 System.Windows.Forms.ToolStripProgressBar。
if (txtbox1.InvokeRequired)
{
txtbox1.Invoke(new MethodInvoker(delegate { txtbox1.Text = string.Empty; }));
}
【问题讨论】:
-
@Sev:如果你使用 System.Windows.Forms.Controls.ProgressBar 那么它包含 InvokeRequeired 方法,因为它是从 Control 派生的,并且 Control 实现了 ISynchronizeInvoke 接口。
-
我正在使用 System.Windows.Forms.ToolStripProgressBar
-
我可以只为这个单一控件使用 backgroundWorker 吗?我不想重做整个线程代码
-
@Sev: 然后使用
this.InvokeRequired,因为ToolStripProgressBar和表单中创建的所有其他控件都是在同一个表单线程中创建和初始化的。 -
System.Windows.Forms.ToolStripProgressBarprgBarMain.GetCurrentParent().InvokeRequired 是万一有人需要的解决方案
标签: c# .net multithreading