Tôi có một đối tượng có chứa một chuỗi hoạt động. Tôi muốn giết thread khi đối tượng nằm ngoài phạm vi.Làm thế nào để chặn hoàn toàn một sợi trong một đối tượng trong C#
using System.IO;
using System;
using System.Threading;
namespace tt {
class Program
{
static void Main()
{
AnotherClass a = new AnotherClass();
a.Say();
}
}
class AnotherClass:IDisposable {
private bool m_Disposed;
private readonly AutoResetEvent m_ResetEvent = new AutoResetEvent(false);
public AnotherClass() {
Thread t = new Thread(wait);
t.Start();
}
public void Dispose() {
Dispose(true);
}
private void Dispose(bool disposing) {
if (m_Disposed) {
return;
}
if (disposing) {
Console.WriteLine("inner disposing");
}
m_ResetEvent.Set();
Console.WriteLine("Outer disposing");
m_Disposed = true;
}
private void wait() {
m_ResetEvent.WaitOne();
}
~AnotherClass() {
Dispose(false);
}
public void Say() {
Console.WriteLine("HellO");
}
}
}
Chương trình sẽ chỉ treo trong đó vì không được gọi hàm hủy của AnotherClass. Tôi biết tôi có thể gọi a.Dispose() để giết các chủ đề. Nhưng có cách nào để ngầm giết chủ đề khi đối tượng ra khỏi phạm vi không?
tôi nghĩ cách duy nhất để ngầm chặn luồng là ngắt kết nối nguồn. –