| Цитата(alir @ 6.12.2005, 19:33) | | Все свелось к задаче создания класса, который содержит свои методы и переменные, а также методы класса Thread |
Вот если честно, не могу себе представить такой задачи, потому что класс Thread не просто так сделан sealed.
Если нужно сделать, чтобы у класса был метод, выполняющийся в отдельном потоке, а класс предоставлял возможность приостановить и запустить заново его работу, то это можно сделать так:
| Код | public class MyAsyncClass { Thread _thread = null;
/// <summary> /// Приостанавливает выполнение /// </summary> public void Suspend() { if(_thread != null && _thread.ThreadState == ThreadState.Running) { _thread.Suspend(); // ждем, пока поток остановится while(_thread.ThreadState == ThreadState.SuspendRequested); } }
/// <summary> /// Продолжает выполнение /// </summary> public void Resume() { if(_thread != null && _thread.ThreadState == ThreadState.Suspended) { _thread.Resume(); // ждем, пока поток перейдет в состояние Running while(_thread.ThreadState != ThreadState.Running); } }
public MyAsyncClass() { _thread = new Thread(new ThreadStart(startMyOperationImpl)); }
/// <summary> /// Собственно сама операция /// </summary> private void startMyOperationImpl() { }
/// <summary> /// Запускаем асинхронную операцию (public метод-обертка) /// </summary> public void StartMyOperation() { _thread.Start(); } }
|
Код не запускал, но все должно работать. При известном желании можно сделать так, что класс будет работать с любым потоковым методом (не только со своим). |