Вы можете сделать это самостоятельно, просто убедитесь, что ваш метод потока вызывает завершенный метод (или событие), когда это будет сделано.
Поскольку CF также не поддерживает ParameterizedThreadStart, я однажды создал небольшой вспомогательный класс.
Следующее является выдержкой и не было повторно протестировано:
//untested
public abstract class BgHelper
{
public System.Exception Error { get; private set; }
public System.Object State { get; private set; }
public void RunMe(object state)
{
this.State = state;
this.Error = null;
ThreadStart starter = new ThreadStart(Run);
Thread t = new Thread(starter);
t.Start();
}
private void Run()
{
try
{
DoWork();
}
catch (Exception ex)
{
Error = ex;
}
Completed(); // should check Error first
}
protected abstract void DoWork() ;
protected abstract void Completed();
}
Вы должны унаследовать и реализовать DoWork и Completed. Возможно, имеет смысл использовать для свойства State, просто заметил это.