Thread.Suspend kullanımdan kaldırıldı. Lütfen System.Threading'deki Monitor, Mutex, Event ve Semaphore gibi diğer sınıfları kullanarak Threads'i senkronize edin veya kaynakları koruyun. Bağlantı girişi görünür. Thread.Resume kullanımdan kaldırıldı. Lütfen System.Threading'deki Monitor, Mutex, Event ve Semaphore gibi diğer sınıfları kullanarak Threads'i senkronize edin veya kaynakları koruyun. Bağlantı girişi görünür. Başlık duraklamak veya devam etmek isterse, daha önce Askıya Alma ve Devam yöntemini kullandım ve bu iki yöntemi başlığı çalıştırmak için kullandım, ki bu aslında sorunluydu ve o zamanlar umursamıyordum, o yüzden bugün alıp inceleyelim!
Yukarıdaki iki yöntemi iplikleri askıya almak ve devam ettirmek için kullanmanın sorunu nedir?
Örneğin, iş parçacığını askıya almak için Askıya Yöntemi çağırırsak ve hemen Askıya Devam Yöntemini çağırıp askıya alınan iş parçacığına devam edersek bir sorun olabilir.
Çünkü iş parçacığını askıya almak için Askıya Alma yöntemini çağırdıktan sonra, iş başlığı hemen askıya alınmayabilir, burada işlem süresi gerekiyor, bu sırada hemen Resume yöntemini çağırıp askıya alınan iş parçacığına devam edersiniz ve program hemen donur!
Microsoft'un açıklaması şudur:
İş parçacığını senkronize etmek için Suspend ve Resume yöntemlerini kullanmayın. İş parçacılığını durdurduğunuzda kodun ne olduğunu bilmenin bir yolu var mı? Güvenlik ayrıcalığı değerlendirmesi sırasında kilit tutarsanız, AppDomain'deki askıya alınmış iş parçacığındaki diğer iş parçacıkları engellenebilir. Sınıf oluşturucuyu çalıştırırken AppDomain'deki diğer iş parçacıklarını askıya alırsanız, sınıfı kullanma girişimleri engellenir. Çıkmazlar kolayca meydana gelebilir.
// Özet: Askıya alınan ipliği devam ettirin. // Anomali: T:System.Threading.ThreadStateException: İş başlığı başlatılmadı, ölü veya bekleme halinde değil. // T:System.Security.SecurityException: Arayan kişi doğru System.Security.Permissions.SecurityPermission dosyasına sahip değildir. [Modası geçmiş("Thread.Resume kullanımdan kaldırıldı. Lütfen System.Threading'deki Monitor, Mutex, Event ve Semaphore gibi diğer sınıfları kullanarak Threads'i senkronize edin veya kaynakları koruyun. Bağlantı girişi görünür.", yanlış)] [GüvenlikGüvenliKritik] kamu boşluğu Özgeçmiş(); Bu sorunu nasıl çözebilirim?
ManualResetEvent sınıfı
Bir veya daha fazla bekleyen iş parçacığına bir olayın gerçekleştiğini bildirin. Bu tür tipler miras alınamaz.
Test kodu şu şekildedir:
|