В этом случае я получаю, чтобы WorkerThread вызывал функцию после завершения работы, которая вызовет поток пользовательского интерфейса, который может выполнять работу, в которой вы нуждаетесь.
* 1003 Е.Г. *
private void SetWorkerThreadToDoWork()
{
WorkerThread.Start();
}
private void MyWorkerThreadWork()
{
//This will be on the WorkerThread (called from WorkerThread.Start())
DoWorkFunc();
WorkComplete();
}
private void WorkComplete()
{
if(InvokeRequired == true)
{
//Do the invoke
}
else
{
//Check work done by worker thread
//e.g. ServersSqlDataSourceEnumerator.Instance.GetDataSources();
}
}
Если вы используете простой процесс, я бы выбрал BackgroundWorkerThread, он имеет свои собственные события, которые запускаются по завершении работы. Но если вам требуется использовать поток, я бы либо обратился к асинхронным обратным вызовам, либо к маршруту, аналогичному показанному выше.