第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

Invoke()和BeginInvoke()之間有什么區(qū)別?

Invoke()和BeginInvoke()之間有什么區(qū)別?

藍(lán)山帝景 2019-06-18 10:24:13
Invoke()和BeginInvoke()之間有什么區(qū)別?只是想知道BeginInvoke()和Invoke()是?主要是用來(lái)做什么的。編輯:創(chuàng)建線程對(duì)象和調(diào)用對(duì)象與僅僅調(diào)用BeginInvoke()代表?還是他們是一樣的?
查看完整描述

3 回答

?
鴻蒙傳說(shuō)

TA貢獻(xiàn)1865條經(jīng)驗(yàn) 獲得超7個(gè)贊

您的意思是代表.Invoke/BeginInvoke或Control.Invoke/BeginInvoke?

  • Invoke:在同一線程上同步執(zhí)行。
  • BeginInvoke:在線程池線程上異步執(zhí)行。
  • Control.Invoke:在UI線程上執(zhí)行,但調(diào)用線程在繼續(xù)之前等待完成。
  • Control.BeginInvoke:在UI線程上執(zhí)行,調(diào)用線程不等待完成。

Tim的回答提到了什么時(shí)候您可能想使用BeginInvoke-盡管它主要是針對(duì)代表的,我想是BeginInvoke。

對(duì)于Windows窗體應(yīng)用程序,我建議您通常使用BeginInvoke。這樣,您就不需要擔(dān)心死鎖,例如-但是您需要了解到下一次查看UI時(shí)UI可能還沒(méi)有更新!特別是,您不應(yīng)該修改UI線程可能要用于顯示的數(shù)據(jù)。例如,如果您有一個(gè)具有FirstName和LastName屬性的人,并且您這樣做了:

person.FirstName = "Kevin"; // person is a shared referenceperson.LastName = "Spacey";control.BeginInvoke(UpdateName);person.FirstName = 
"Keyser";person.LastName = "Soze";

然后UI很可能會(huì)顯示“Keyser Spacey”。(它很有可能展示“凱文·索茲”,但只能通過(guò)記憶模型的怪異表現(xiàn)。)

但是,除非您有這類問(wèn)題,Control.BeginInvoke更容易糾正錯(cuò)誤,并且可以避免后臺(tái)線程不必要地等待。請(qǐng)注意,Windows窗體團(tuán)隊(duì)已經(jīng)保證您可以使用Control.BeginInvoke以“失火和遺忘”的方式-即不調(diào)用EndInvoke。通常情況下,異步調(diào)用不是這樣的:通常每個(gè)BeginXXX都應(yīng)該有一個(gè)相應(yīng)的EndXXX調(diào)用,通常是在回調(diào)中。


查看完整回答
反對(duì) 回復(fù) 2019-06-18
?
慕虎7371278

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超4個(gè)贊

在JonSkeet的答復(fù)的基礎(chǔ)上,有時(shí)您希望調(diào)用委托并等待它的執(zhí)行完成,然后才能繼續(xù)當(dāng)前線程。在這些情況下,調(diào)用就是您想要的。

在多線程應(yīng)用程序中,您可能不希望線程等待委托完成執(zhí)行,特別是如果委托執(zhí)行I/O(這可能會(huì)使委托和線程塊)。

在這種情況下,BeginInvoke將是有用的。通過(guò)調(diào)用它,可以讓委托啟動(dòng),但是線程可以與委托并行執(zhí)行其他事情。

使用BeginInvoke會(huì)增加代碼的復(fù)雜性,但有時(shí)性能的改進(jìn)值得這樣做。


查看完整回答
反對(duì) 回復(fù) 2019-06-18
?
犯罪嫌疑人X

TA貢獻(xiàn)2080條經(jīng)驗(yàn) 獲得超4個(gè)贊

之間的區(qū)別Control.Invoke()Control.BeginInvoke()是,

  • BeginInvoke()

    將調(diào)度GUI線程上的異步操作。調(diào)度異步操作時(shí),代碼將繼續(xù)。過(guò)了一段時(shí)間(您不知道確切的時(shí)間),您的異步操作將被執(zhí)行。
  • Invoke()

    將執(zhí)行異步操作(在GUI線程上),并等待操作完成。

一個(gè)合乎邏輯的結(jié)論是,您傳遞給的委托Invoke()可以具有out參數(shù)或返回值,而將委托傳遞給BeginInvoke()不能(必須使用EndInvoke檢索結(jié)果)。


查看完整回答
反對(duì) 回復(fù) 2019-06-18
  • 3 回答
  • 0 關(guān)注
  • 2236 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)