Bir konsol uygulamasında güvenilir zamanlayıcı


103

.NET'te üç zamanlayıcı türü olduğunun farkındayım (bkz . .NET Framework Sınıf Kitaplığındaki Zamanlayıcı Sınıflarını Karşılaştırma ). Ana iş parçacığı meşgulse diğer türler sürüklenebileceği için iş parçacıklı bir zamanlayıcı seçtim ve bunun güvenilir olması için ihtiyacım var.

Bu zamanlayıcının zamanlayıcının kontrolünde çalışma şekli başka bir iş parçacığına yerleştirilir, böylece meşgul olmadığında ana iş parçacığında tamamlanan iş başlangıcıyla birlikte her zaman işaretlenebilir.

Bir konsol uygulamasında bu zamanlayıcıyla ilgili sorun, zamanlayıcı başka bir iş parçacığında ilerlerken, ana iş parçacığının uygulamanın kapanmasına hiçbir şey yapmamasıdır.

Bir while truedöngü eklemeyi denedim , ancak zamanlayıcı kapandığında ana iş parçacığı çok meşgul.

Yanıtlar:


59

Console.ReadLine()Ana iş parçacığını engellemek gibi bir şey kullanabilirsiniz , böylece diğer arka plan iş parçacıkları (zamanlayıcı dizileri gibi) yine de çalışacaktır. Yürütmeyi engellemek için bir AutoResetEvent de kullanabilirsiniz , ardından (gerektiğinde) ana iş parçacığını serbest bırakmak için o AutoResetEvent nesnesinde Set () yöntemini çağırabilirsiniz. Ayrıca Timer nesnesine başvurunuzun kapsam dışına çıkmadığından ve çöplerin toplanmadığından emin olun.


20

Ana iş parçacığını işlemenin sonunda engellemek için bir ManualResetEvent kullanmayı düşünün Reset()ve zamanlayıcının işlenmesi bittiğinde onu çağırın . Bu, sürekli çalışması gereken bir şeyse, bunu bir konsol uygulaması yerine bir hizmet sürecine taşımayı düşünün.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.