我真的不明白任務和線程。 我有內部三個層次的嵌套for
,我希望在不同的線程/任務多次運行的方法,但我傳遞給方法的變量去瘋狂,讓我跟一些代碼解釋:在c#中同時運行相同方法的多個實例而沒有數據丟失?
List<int> numbers=new List<int>();
for(int a=0;a<=70;a++)
{
for(int b=0;b<=6;b++)
{
for(int c=0;b<=10;c++)
{
Task.Factory.StartNew(()=>MyMethod(numbers,a,b,c));
}
}
}
private static bool MyMethod(List<int> nums,int a,int b,int c)
{
//Really a lot of stuff here
}
這是嵌套,myMethod
真的做了很多事情,比如計算一些數字的階乘,寫入不同的文檔,用組合列表匹配響應和調用其他小方法,它也有一些返回值(布爾值),但目前我不關心他們。 問題是沒有任何任務結束,它就像每次嵌套調用它刷新自身的方法,刪除以前的實例。 它也給出了一個錯誤,「嘗試分爲0」,其值爲FOR由FOR分隔的值,例如a=71, b=7, c=11
以及所有變量爲空(這就是爲什麼除以零)。我真的不知道如何解決它。
'myMethod'或'MyMethod'?你將'int'傳遞給myMethod的第一個參數。 'MyMethod'以'List'作爲第一參數。當你的代碼沒有意義時,很難提供幫助。 –
spender
2013-03-04 14:48:00
我的壞,編輯和糾正 – 2013-03-04 14:51:15
「這是巢,myMethod真的做了很多事情」。方法不應該做很多事情,但一件事。這有助於解決您遇到的問題。 – 2013-07-05 14:22:31