Лейто, это, вероятно, будет лучший способ создать задачи, которые можно прервать, просто установив флаг или выполнив событие или сигнал.К сожалению, вы предоставили мне меньше информации, чтобы предоставить вам точный фрагмент кода, но возможное, очень простое, решение могло бы быть:
class MyTask
{
bool bShouldDoWork;
public event EventHandler Aborted;
public void DoWork()
{
bShouldDoWork = true;
while(bShouldDoWork)
{
//Do work.
//But ensure that the loop condition is checked often enough to
//allow a quick and graceful termination.
}
if(Aborted != null)
{
//Fire event
Aborted(this, EventArgs.Empty);
}
}
//Call this method from another thread, for example
//when a button is pressed in your UI etc.
public void Abort()
{
bShouldDoWork = false;
}
}
Обратите внимание, что этот фрагмент является очень простым и можеттребуют модификации, чтобы соответствовать вашим потребностям.Я надеюсь, что это поможет вам поймать идею правильной многопоточности.
Пожалуйста, не используйте Thread.Abort ().Это только даст вам много головной боли.