作者reptile0426 ( )
看板C_Sharp
标题Re: [问题] delegate.BeginInvoke跟control.invoke …
时间Wed Nov 21 17:31:03 2007
: 谢谢你 那关於worker thread是什麽我大概知道了,
: 有人要解答control.BeginInvoke跟 delegate.BeginInvoke的不同吗= =?
: 这位大大讲的这个范例我有看过,观念我也懂得
: 其实这提的疑问也是来自於这篇文章
: http://msdn2.microsoft.com/en-us/library/ms951089.aspx
: 他在里面同时用到Control.BeginInvoke跟delegate.BeginInvoke
: 搞得我....探口气
贴上我的问题点
Button_click()算是程式开始点 抓到totalDigits:要算到小数点後几位
并依照目前进度 到progressbar去显示进度
static void Main() {
Application.Run(new Form1());
}
delegate void ShowProgressDelegate(string pi, int totalDigits, int
digitsSoFar);
void ShowProgress(string pi, int totalDigits, int digitsSoFar) {
// Make sure we're on the right thread
if( _pi.InvokeRequired == false ) {
_pi.Text = pi;
_piProgress.Maximum = totalDigits;
_piProgress.Value = digitsSoFar;
}
else {
// Show progress asynchronously
ShowProgressDelegate showProgress = new
ShowProgressDelegate(ShowProgress);
//Invoke(showProgress, new object[] { pi, totalDigits, digitsSoFar});
BeginInvoke(showProgress, new object[] { pi, totalDigits,
digitsSoFar});
}
使用control.BeginInvoke
}
void CalcPi(int digits) {
StringBuilder pi = new StringBuilder("3", digits + 2);
// Show progress
ShowProgress(pi.ToString(), digits, 0);
if( digits > 0 ) {
pi.Append(".");
for( int i = 0; i < digits; i += 9 ) {
int nineDigits = NineDigitsOfPi.StartingAt(i+1);
int digitCount = Math.Min(digits - i, 9);
string ds = string.Format("{0:D9}", nineDigits);
pi.Append(ds.Substring(0, digitCount));
// Show progress
ShowProgress(pi.ToString(), digits, i + digitCount);
}
}
}
delegate void CalcPiDelegate(int digits);
private void _calcButton_Click(object sender, System.EventArgs e) {
// Synch method
// CalcPi((int)_digits.Value);
// Asynch delegate method
CalcPiDelegate calcPi = new CalcPiDelegate(CalcPi);
calcPi.BeginInvoke((int)_digits.Value, null, null);
}
使用delegate.BeginInvoke
}
}
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 163.25.101.28
※ 编辑: reptile0426 来自: 163.25.101.28 (11/21 17:37)
※ 编辑: reptile0426 来自: 163.25.101.28 (11/21 17:44)
※ 编辑: reptile0426 来自: 163.25.101.28 (11/21 21:03)