【发布时间】:2011-12-16 16:39:58
【问题描述】:
好吧,我正在编写一个对字符串、标签、链接标签、类等有用的扩展/方法文件。
但是,我有一个问题。我有一个 showMessage() 方法可以更改标签的文本,效果很好。但我决定用线程执行来做这件事,然后我这样做:
namespace LabelExtensions
{
public static class LabelExtensionsClass
{
private delegate void UpdateState();
public static void ShowMessage(this Label label, string text)
{
if (label.InvokeRequired)
{
label.Invoke((UpdateState)delegate
{
label.Text = text;
});
}
else
{
label.Text = text;
}
}
}
}
抱歉,打错了。我在论坛上输入了这个代码。 错误继续。
根据documentation,使用Invoke方法需要导入:
命名空间: System.Windows.Forms
程序集: System.Windows.Forms(在 System.Windows.Forms.dll 中)
然后我做了:
using System.Windows.Forms;
但这会返回相同的错误:
The name 'Invoke' does not exist in the current context
我该如何解决这个问题?
提前致谢。
【问题讨论】:
-
可以使用已有的
Action委托;你不需要创建自己的。 -
也许,
(label.TopLevelControl as Form).Invoke
标签: c# .net multithreading invoke invokerequired