2

这应该很简单!

我想创建一个匿名 Action<> 委托来执行 GUI 更新,我将从其他几个匿名委托(将在单独的线程上运行)调用它。

    void Test() {

        Action<string> invokeDisplay = new Action<string>(delegate(string Element) {
            //Do a variety of things to my GUI depending on Element parameter
        });


        MethodInvoker opLong1 = new MethodInvoker(delegate() {

        //  Do long task

            this.Invoke(invokeDisplay("long1"));
        });

        MethodInvoker opLong2 = new MethodInvoker(delegate() {

        //  Do long task

            this.Invoke(invokeDisplay("long2"));
        });

        new Thread(new ThreadStart(opLong1)).Start();
        new Thread(new ThreadStart(opLong2)).Start();
    }

那么这条线的正确语法是什么?

            this.Invoke(invokeDisplay("long1"));
4

2 回答 2

4

语法是:

Invoke(action, "long1");

委托是第一个参数,接下来是您要传递给它的参数。

于 2013-09-04T19:05:26.853 回答
1

另一个可用选项:

this.Invoke((Action)(() => invokeDisplay("long1")));
于 2013-09-04T19:08:27.153 回答