帮助在线程上执行带参数的方法

时间:2011-05-09 18:30:52

标签: c# multithreading

我有一个方法,我实例化如下:

new DatabaseHarness.MemoryStressTest().ExecuteTest("Thread 1",1,1,1)

通过线程进行此调用的标准方法是什么,使用.NET 4的线程功能传递如上所示的参数?

非常感谢

3 个答案:

答案 0 :(得分:3)

怎么样:

Thread thread = new Thread(() => {
    new DatabaseHarness.MemoryStressTest().ExecuteTest("Thread 1",1,1,1);
});
thread.Start();

答案 1 :(得分:2)

.NET 4.0的方法是使用Task

var task = Task.Factory.StartNew(
  () => 
  {
    new DatabaseHarness.MemoryStressTest().ExecuteTest("Thread 1", 1, 1, 1);
  },
  TaskCreationOptions.LongRunning
);

答案 2 :(得分:0)

至少有两种方法可以做到这一点。请查看此链接以获取更多信息:http://www.dotnetspider.com/resources/4698-Making-Parameterized-reads-C.aspx

第一个选项涉及创建ParameterizedThreadStart委托,第二个选项是创建包装参数的匿名方法调用(使用第二个方法可能会导致不必要的闭包)。