【发布时间】:2012-09-07 07:20:15
【问题描述】:
在我的应用程序中,我有一个负责所有数据库操作的类。它从主类调用,并在操作完成后使用委托调用方法。 因为它是异步的,所以我必须在我的 GUI 上使用调用,所以我创建了一个简单的扩展方法:
public static void InvokeIfRequired<T>(this T c, Action<T> action)
where T: Control
{
if (c.InvokeRequired)
{
c.Invoke(new Action(() => action(c)));
}
else
{
action(c);
}
}
当我尝试在 textBox 上调用它时效果很好:
textBox1.InvokeIfRequired(c => { c.Text = "it works!"; });
但是当我尝试在 ToolStripStatusLabel 或 ToolStripProgressBar 上调用它时出现错误:
“System.Windows.Forms.ToolStripStatusLabel”类型不能用作 泛型类型或方法中的类型参数“T” 'SimpleApp.Helpers.InvokeIfRequired(T, System.Action)'。有 没有隐式引用转换 'System.Windows.Forms.ToolStripStatusLabel' 到 'System.Windows.Forms.Control'。
我知道这可能是一个简单的修复,但我可以处理它:/
【问题讨论】:
-
也许这个类似的问题会对你有所帮助。 stackoverflow.com/questions/1127973/…
标签: c# winforms .net-3.5 invokerequired