這個問題分兩部分。 我有一個控制檯應用程序,它從幾臺服務器獲取信息並將此信息保存到數據庫。爲了enabel這執行simultaniously我已經使用線程。我正在嘗試每分鐘自動執行一次該執行。如何正確執行線程每分鐘?
搜索計算器我發現,這可能是工作:
var timer = new System.Threading.Timer((e) =>
{
var models = ServerHandler.GetServerModels();
foreach (var m in models)
{
ServerHandler.MakeThreads(m);
}
Console.WriteLine("Running...");
Console.WriteLine("Press 'X' to exit or close the window, i : " + i);
i++;
}, null, 0, TimeSpan.FromMinutes(1).Seconds);
然而,由於預期這不工作,只執行一次。如果我改變例如這樣的:
TimeSpan.FromMinutes(0.5).Seconds
或者:
TimeSpan.FromSeconds(30).Seconds
然後,它的工作原理。 我在做什麼錯?這個問題的
第二部分:
當這個實際工作,因爲我上面顯示出別的東西發生。 該進程連續運行,在474個線程崩潰之後,系統表示系統內存不足。
我嘗試過使用線程睡眠,但是當我這樣做時,它會在一次被毀壞後停止執行。
包括這一點,如果它可能會幫助:
public static void MakeThreads(ServerModel model)
{
Thread thread = new Thread(() => SaveServerInfo(model));
thread.Start();
//Thread.Sleep(1);
//thread.Join();
}
我怎樣才能使這項工作?
「TimeSpan.FromMinutes(1).Seconds」返回0。你要「TimeSpan.FromMinutes(1).TotalSeconds」返回60 –
我會使用'TimeSpan'重載。 _https://msdn.microsoft.com/en-us/library/ah1h85ch(v = vs.110).aspx_ –
'TimeSpan.FromSeconds(60).Seconds'?! –