C#,从后台线程调用匿名方法(Action<>)

标签 c# multithreading anonymous-methods

这应该很简单!

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

    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"));

最佳答案

语法是:

Invoke(action, "long1");

委托(delegate)是第一个参数,后面是您要传递给它的参数。

关于C#,从后台线程调用匿名方法(Action<>),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18621565/

相关文章:

c# - 为什么 Linq OrderBy 扩展不影响调用它的列表?

c# - 为什么我不能在匿名方法中的while循环中使用break?

javascript - javascript 中嵌套匿名方法的闭包

c# - 方法和匿名类型

c++ - 如何从多个 std::threads 手动发送 QSignal?

c# - 使用 URL 重写从 URL 中删除 .aspx 扩展名

c# - 如何保存并在以后恢复线程执行状态?

c# - 如何在自动更新期间将 .NET 应用程序固定到任务栏?

python - 将参数传递给线程python

java - 进程 p = Runtime.getRuntime().exec() 将异步运行?