gpt4 book ai didi

c# - 异步委托(delegate)的 BeginInvoke 回调在哪个线程中?

转载 作者:行者123 更新时间:2023-11-30 15:48:14 25 4
gpt4 key购买 nike

异步委托(delegate)的 BeginInvoke 回调应该在哪个线程中?
UI 线程或线程池线程。

例如

private void button1_Click(object sender, EventArgs e)
{
Func<string> func1 = LoadingDada;
func1.BeginInvoke(IsDone, func1);
}


string LoadingDada()
{
Thread.Sleep(10000); //simulated a long running
x = Thread.CurrentThread.Name;
return "str_100000";
}

string IsDone(IAsyncResult a)
{
var loadingDataReturn = (Func<string>)a.AsyncState;
string rr = loadingDataReturn.EndInvoke(a);

textBox1.Text = rr;
}

最佳答案

您在委托(delegate)上调用 BeginInvoke ,因此它将是一个池线程。如果您在控件上调用 BeginInvoke ,它将是 UI 线程。

不幸的是,BeginInvoke 在这两种情况下的含义几乎完全相反。

关于c# - 异步委托(delegate)的 BeginInvoke 回调在哪个线程中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2845495/

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