标题几乎说明了这一点。我有一些方法需要在新线程上运行,并且由于创建线程之前的所有代码都几乎相同,所以我认为我会创建一个函数,该函数可以将需要调用的Action作为参数。

问题是,我还没有找到如何告诉线程它需要执行Action的问题。那有可能吗?这是我正在尝试做的一些示例代码。

private void ExecuteInBiggerStackThread(Action<Helper> action, Parameters parms)
{
    ParameterizedThreadStart operation = new ParameterizedThreadStart(action);// here's the mess
    Thread bigStackThread = new Thread(operation, 1024 * 1024);

    bigStackThread.Start(parms);
    bigStackThread.Join();
}

问候,
塞巴

最佳答案

这样的事情应该可以解决问题:

private void ExecuteInBiggerStackThread(Action<Helper> action, Helper h)
{
    var operation = new ParameterizedThreadStart(obj => action((Helper)obj));
    Thread bigStackThread = new Thread(operation, 1024 * 1024);

    bigStackThread.Start(h);
    bigStackThread.Join();
}

关于c# - 如何创建新线程以执行Action <T>,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3290859/

10-16 09:03