Func<string,int> CalcFunc = delegate (string para) { int count = 0; for (int i = 0; i < 1000000000; i++) { count++; } return count; }; CalcFunc.BeginInvoke("",(IAsyncResult result) => { int count = ((Func<string, int>)result.AsyncState).EndInvoke(result); this.txt_msg.Invoke((Action)(delegate () { this.txt_msg.AppendText(count.ToString() + " "); this.txt_msg.AppendText("循环计算完毕.".ToString() + " "); })); }, CalcFunc); this.txt_msg.AppendText("正在循环计算".ToString() + " ");
Dim CalcFunc As Func(Of String, Integer) = Sub(para As String) Dim count As Integer = 0 For i As Integer = 0 To 999999999 count += 1 Next Return count End Sub CalcFunc.BeginInvoke("", Function(result As IAsyncResult) Dim count As Integer = DirectCast(result.AsyncState, Func(Of String, Integer)).EndInvoke(result) Me.txt_msg.Invoke(DirectCast(Sub() Me.txt_msg.AppendText(count.ToString() + vbCr & vbLf) Me.txt_msg.AppendText("循环计算完毕.".ToString() + vbCr & vbLf) End Sub, Action)) End Function, CalcFunc) Me.txt_msg.AppendText("正在循环计算".ToString() + vbCr & vbLf)
async Task<int> XunhuanAsync() { int count = 0; await Task.Run(()=> { for (int i = 0; i < 1000000000; i++) { count++; } }); return count; }
Private Function XunhuanAsync() As Task(Of Integer) Dim count As Integer = 0 Await Task.Run(Function() For i As Integer = 0 To 999999999 count += 1 Next End Function) Return count End Function
private delegate int BeginInvokeMehtod(); int BeginXunHuan() { int count = 0; for (int i = 0; i < 1000000000; i++) { count++; } return count; } void XunHuanCallbak(IAsyncResult result) { try { int count = ((BeginInvokeMehtod)result.AsyncState).EndInvoke(result); this.txt_msg.Invoke((Action)(delegate () { this.txt_msg.AppendText(count.ToString() + " "); this.txt_msg.AppendText("循环计算完毕.".ToString() + " "); })); } catch (Exception ex) { MessageBox.Show(ex.Message); } } BeginInvokeMehtod xunhuan = new BeginInvokeMehtod(BeginXunHuan); xunhuan.BeginInvoke(XunHuanCallbak, xunhuan);