0
這是我的代碼:MethodInvoker輸了?
private void TaskGestioneCartelle()
{
Task.Factory.StartNew(() => GeneraListaCartelle())
.ContinueWith(t => GeneraListaCartelleCompletata()
, CancellationToken.None
, TaskContinuationOptions.None
, TaskScheduler.FromCurrentSynchronizationContext());
}
private void GeneraListaCartelle()
{
// ... code
}
private void GeneraListaCartelleCompletata()
{
Task.Factory.StartNew(() => CopiaCartelle())
.ContinueWith(t => CopiaCartelleCompletato()
, CancellationToken.None
, TaskContinuationOptions.None
, TaskScheduler.FromCurrentSynchronizationContext());
}
private void CopiaCartelle()
{
if (txtLog.InvokeRequired)
{
txtLog.BeginInvoke(new MethodInvoker(delegate { txtLog.AppendText("Copio cartelle in corso..." + Environment.NewLine); }));
}
}
它啓動一個線程。完成後,我啓動另一個線程(從Continue),並嘗試在UI上的Control中編寫一些東西。但實際上txtLog
沒有寫任何內容。我錯在哪裏?
這個方法我想刪除'TaskScheduler.FromCurrentSynchronizationContext());'(用於實驗的緣故),將使當前的代碼工作, 對? –
@ByteBlast,可能是,不確定,但OP可以試試 – Habib
那麼什麼時候需要InvokeRequired?我在一個線程,它應該是必需的:O – markzzz