0
我需要四次調用WCF服務異步和線程安全與異步的東西和靜態方法總是煮我的大腦。TPL異步靜態方法調用線程安全
這四個對靜態方法的異步調用應該是線程安全的嗎?
private void CheckStuff()
{
bool? res1, res2, res3, res4;
// make 4 async calls to SomeServiceCall and wait for all
Task[] tasks = new Task[]
{
Task.Factory.StartNew(() => res1 = SomeServiceCall("apple")),
Task.Factory.StartNew(() => res2 = SomeServiceCall("orange")),
Task.Factory.StartNew(() => res3 = SomeServiceCall("apple")),
Task.Factory.StartNew(() => res4 = SomeServiceCall("banana"))
};
Task.WaitAll(tasks);
}
private static bool? SomeServiceCall(string someParam)
{
bool? retVal = null;
var client = new SomeWcfClient();
retVal = client.CheckSomething(someParam);
return retVal;
}
示例中沒有*顯式*共享狀態。不知道「SomeWcfClient」是幹什麼的。 –
@JimMischel:嗯,這是真的 - 但如果兩個單獨的實例不能從單獨的線程調用,那麼真的所有的投注都關閉。如果代碼使用'SomeWpfClient'的單個實例,那麼這將是一個不同的問題。我希望*這段代碼沒問題。 –
另外,由於它是一個WCF客戶端,並且*假設* SomeWcfClient是一個生成的代理,它應該被封裝在'using'語句中。 –