Ho un oggetto che contiene un thread di lavoro. Mi piacerebbe uccidere il thread quando l'oggetto è fuori portata.Come interrompere implicitamente una discussione in un oggetto in 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");
}
}
}
Il programma si bloccherà solo perché il distruttore di AnotherClass non viene chiamato. So che posso chiamare a.Dispose() per uccidere il thread. Ma esiste un modo per uccidere implicitamente il thread quando l'oggetto esce dall'oscilloscopio?
Penso che l'unico modo per interrompere implicitamente un thread è disconnettere l'alimentazione. –