1
我有一個C#表單,我使用了MSDN上詳述的Invoke
方法從另一個線程與之交談。調用主線程的工作方法,和這裏的基本結構的一個片段:如何從C#中的異步調用返回值?
// In the main thread:
public void doCommand(int arg, out int ret) {
ret = arg + 1;
}
// On another thread:
public delegate void CmdInvoke(int arg, out int ret);
public void execute() {
CmdInvoke d = new CmdInvoke(Program.form.doCommand);
int a = 0;
int b = 0;
Program.form.Invoke(d, new object[] { a, b });
// I want to use b now...
}
如上所述,我現在要返回參數b
回調用線程。目前,b
始終爲0
。我讀過,也許我需要使用BeginInvoke
和EndInvoke
,但我有點困惑說實話我怎麼能在b
?我不介意它是out
參數還是return
,我只是想要它!
你能用'Func'嗎? –
您正在使用錯誤的工具。說明你使用的版本。 C#5? –
爲什麼你首先要做這件事?如果你有一個後臺線程做一些工作,並且你調用Invoke來更新UI,爲什麼UI更新需要將信息發送回長時間運行的任務?首先這是一個非常不尋常的要求。 – Servy