无法使ThreadStart和ParameterizedThreadStart正常运行

时间:2014-12-24 19:16:42

标签: c# multithreading

我正在尝试在C#中学习多线程。我有一个HW分配,我们在其中使用来自MDSN的线程的生产者/消费者示例(Found here)

据我了解,ParameterizedThreadStartThreadStart“相同”,但ParameterizedThreadStart的{​​{1}}参数除外。

我有以下方法,我想创建一个Object委托:

ParameterizedThreadStart

我对public void ThreadProdRun(int amount) { cell.WriteToCell(amount, ref quantity); } 的电话如下:

ParameterizedThreadStart

哪个不起作用,因为重载不匹配。我不能使用对象代替参数或int,因为int是C#中的结构。

1 个答案:

答案 0 :(得分:1)

在visual studio中按ParameterizedThreadStart查看F12签名。

public delegate void ParameterizedThreadStart(object amount);

您的ThreadProdRun方法必须将对象作为参数

public void ThreadProdRun(object amount)
{
   cell.WriteToCell((int)amount, ref quantity);
}

修改 lambda表达式和闭包的示例

int amount = 1;
Thread t = new Thread(() =>
{
    Console.WriteLine(amount);
});