如何在扩展/方法文件中使用Invoke方法?

The*_*ask 7 .net c# multithreading invoke invokerequired

好吧,我正在编写一个对字符串,标签,链接标签,类等有用的扩展/方法文件.

但是,我有一个问题.我有一个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;
            }
        }
}
}
Run Code Online (Sandbox Code Playgroud)

对不起,这是一个错字.我在论坛上输入了这段代码.错误继续.

根据文档,要使用Invoke方法需要导入:

命名空间: System.Windows.Forms

程序集: System.Windows.Forms(在System.Windows.Forms.dll中)

然后我做了:

using System.Windows.Forms;
Run Code Online (Sandbox Code Playgroud)

但是这会返回相同的错误:

The name 'Invoke' does not exist in the current context
Run Code Online (Sandbox Code Playgroud)

我怎么解决这个问题?

提前致谢.

Jas*_*own 8

为什么不这样做:

label.BeginInvoke( (Action) (() => label.Text = text));
Run Code Online (Sandbox Code Playgroud)

无需创建自己的委托.只需使用内置的Action委托.您可能应该为基本Control类而不是Label类创建扩展方法.它会更加可重复使用.