在我的应用程序中,我有一个负责所有数据库操作的类。它被从主类调用,并使用委托在操作完成后调用方法。 由于它是异步的,所以我必须在我的 GUI 上使用 invoke 方法,因此我创建了一个简单的扩展方法:
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'不能用作泛型类型或方法'SimpleApp.Helpers.InvokeIfRequired(T, System.Action)'中的类型参数'T'。从'System.Windows.Forms.ToolStripStatusLabel'到'System.Windows.Forms.Control'没有隐式引用转换。”
我知道这可能很简单,但我只是无法处理它 :/