gpt4 book ai didi

c# - 从 Thread.Start() 的委托(delegate)函数访问返回值

转载 作者:太空狗 更新时间:2023-10-29 21:00:16 25 4
gpt4 key购买 nike

我有一个程序通过 Thread.Start 执行一个方法。该方法有一个我想访问的返回值。有没有办法做到这一点?这是一个示例...

var someValue = "";
Thread t = new Thread(delegate() { someValue = someObj.methodCall(); });

t.Start();

while (t.isAlive) Thread.Sleep(1000);

// Check the value of someValue

因此,一旦 while 循环结束,应该设置 someValue - 但因为它是在另一个线程中执行的,所以它不会被设置。有没有简单的方法来访问它?

最佳答案

当调用者和线程方法共享一个变量时,您已经可以访问它 - 一旦线程完成,您只需检查 someValue

当然,您必须知道线程方法何时完成才能发挥作用。在底部,有两种方法可以做到这一点:

  • 将回调发送到它可以在完成时执行的线程方法。您可以传递回调方法 someValue。如果您不关心回调何时执行,则可以使用此技术。

  • 使用 WaitHandle某种(或 Thread.Join )。这些会告诉您资源何时准备就绪或事件何时完成。如果您想启动一个线程,执行其他操作,然后等到线程完成后再继续,此技术很有用。 (换句话说,如果您想与线程同步备份,这很有用,只是不是马上。)

关于c# - 从 Thread.Start() 的委托(delegate)函数访问返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1942255/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com