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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

請幫忙詳細(xì)解釋下這個函數(shù)里的每條語句,謝謝

請幫忙詳細(xì)解釋下這個函數(shù)里的每條語句,謝謝

C#
飲歌長嘯 2022-12-17 21:17:10
namespace DelegateTest { internal delegate void ProgressDelegate(int value); public partial class Form1 : Form { public Form1() { InitializeComponent(); this.progressBar1.Maximum = 200000; } private void button1_Click(object sender, EventArgs e) { Thread thread = new Thread(SetValue); thread.IsBackground = true; thread.Start(); } private void SetValue() { for (int i = 1; i <= 200000; i++) { SetValue(i); } } private void SetValue(int i) { if (InvokeRequired) { Invoke(new ProgressDelegate(SetValue), i); return; } progressBar1.Value = i; } } }//為什么第一次InvokeRequired就是true//Invoke(new ProgressDelegate(SetValue), i); SetValue是什么意思?//InvokeRequired==false時執(zhí)行 progressBar1.Value = i;?//請詳細(xì)解釋下這個函數(shù)里的每條語句
查看完整描述

1 回答

?
30秒到達(dá)戰(zhàn)場

TA貢獻(xiàn)1828條經(jīng)驗 獲得超6個贊

“為什么第一次InvokeRequired就是true”

因為你第一次調(diào)用的時候是在不同的線程所以invokereuqired是為true,而你后面的問題“InvokeRequired==false時執(zhí)行
progressBar1.Value
=
i;?”
這是必須的因為執(zhí)行了一個invoke操作,簡單的你可以理解這個時候講操作傳遞給了pb控件所在的線程,所以在invokereuqired=false的情況下,執(zhí)行對pb的值更改操作 Invoke(new
ProgressDelegate(SetValue),
i);
SetValue是什么意思?SetValue是你自己定義的方法,這個語句的意思是將你SetValue方法通過delegate(委托)進(jìn)行封裝然后通過invoke傳遞給某個線程,某種情況下對我們來說這個線程是不可知道的,所以我們采用委托來封裝我們方法來傳遞

查看完整回答
反對 回復(fù) 2022-12-21
  • 1 回答
  • 0 關(guān)注
  • 87 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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