我正在尝试在C#中学习多线程。我有一个HW分配,我们在其中使用来自MDSN的线程的生产者/消费者示例(Found here)
据我了解,ParameterizedThreadStart
与ThreadStart
“相同”,但ParameterizedThreadStart
的{{1}}参数除外。
我有以下方法,我想创建一个Object
委托:
ParameterizedThreadStart
我对public void ThreadProdRun(int amount)
{
cell.WriteToCell(amount, ref quantity);
}
的电话如下:
ParameterizedThreadStart
哪个不起作用,因为重载不匹配。我不能使用对象代替参数或int,因为int是C#中的结构。
答案 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);
});