Bu soru iki bölümden oluşmaktadır. Birkaç sunucudan bilgi alan ve bu bilgiyi bir DB'ye kaydeden bir konsol uygulamasına sahibim. Bunu enabel olarak yürütmek için simültane olarak kullanıyorum. Bu yürütmeyi her dakika otomatik yapmaya çalışıyorum. ben bu işe yarayabilir bulundu stackoverflow aranıyorHer dakika doğru olarak iş parçacığı nasıl yürütülür?
:
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);
Ancak bu tahmin gibi çalışmıyor, sadece bir defa çalıştırır.
TimeSpan.FromMinutes(0.5).Seconds
Veya: i Örneğin bunun için geçerseniz
TimeSpan.FromSeconds(30).Seconds
Sonra çalışır. Neyi yanlış yapıyorum? Bu sorunun
İkinci kısım:
bu aslında bir şeye yukarıda gösterdiği gibi başka olur çalışmaktadır. Süreç sürekli olarak çalışıyor ve 474 iş parçacığının ardından çöküyor ve sistemin bellek yetersiz olduğunu söylüyor.
Bunun için iş parçacığı uyku kullanmayı denedim, ancak bunu yaptığımda, bir kez çalıştırıldıktan sonra yürütmeyi durdurur.
public static void MakeThreads(ServerModel model)
{
Thread thread = new Thread(() => SaveServerInfo(model));
thread.Start();
//Thread.Sleep(1);
//thread.Join();
}
nasıl bu iş yapabilirsiniz: Bu da yardımcı olabilir eğer dahil
?
'TimeSpan.FromMinutes (1) .Seconds' döner Sen 60. –
I döndürür 'TimeSpan.FromMinutes (1) .TotalSeconds' istiyor 0. TimeSpan aşırı yüklenmesini kullanırdı. _https: //msdn.microsoft.com/en-us/library/ah1h85ch (v = vs.110) .aspx_ –
Nasıl? TimeSpan.FromSeconds (60) .Seconds? –