我如何等待线程完成它的工作,然后执行下一个命令c#

本文关键字:工作 然后 执行 命令 下一个 何等待 等待 线程 | 更新日期: 2023-09-27 18:23:35

我有下面的代码(但不起作用)。。我需要等到线程完成它的工作,然后执行下一个命令

private void btnPaste_Click(object sender, EventArgs e)
    {
        if (copiedItems != null)
        {
            if (copy)
            {
                System.Threading.Thread thPASTE = new System.Threading.Thread(PasteFromCopy);
                thPASTE.Start(currAddress);
                lock (this)
                {
                    btnRefresh_Click(sender, e);
                }
            }
            else
            {
                System.Threading.Thread thPASTE = new System.Threading.Thread(PasteFromMove);
                thPASTE.Start(currAddress);
                lock (this)
                {
                    btnRefresh_Click(sender, e);
                }
            }
        }
    }

粘贴应该做一些代码,然后我应该刷新显示的列表。。我需要这样做,因为当我在线程中调用刷新时,它对我不起作用
我该怎么做??

我如何等待线程完成它的工作,然后执行下一个命令c#

您可以在线程实例上使用Join方法,该方法将阻塞调用线程,直到其他线程完成为止。

您还可以使用WaitHandles并使用WaitOne或WaitAll方法。

i need to do it this way, because it doesn't work for me when i call the refresh in the thread

您的问题与JoinWaitWaitOne等线程同步无关。

从Windows窗体中的辅助线程更新用户界面元素很棘手,因为不允许辅助线程直接从窗体或其任何子控件读取或写入属性值。存在此限制是因为Windows窗体中的窗体对象和控件对象不是线程安全的。唯一允许直接访问窗体或其控件之一的属性值的线程是主UI线程

要从线程(主线程除外)更新GUI,需要调用窗体的InvokeBeginInvoke方法(或一些控件),以便将委托插入UI线程的Dispatcher中。

这些链接可以帮助您。

如何在C#中从另一个线程更新GUI?

从辅助线程更新UI

从另一个线程更新GUI使变得简单