------------------------------------------------------------------------------------
--------------------自动处理跨线程的相关操作-及异步调用方式----------------------------
#region 异步执行方法
/// <summary>
/// 异步调用方式
/// </summary>
void AsyncMethod(object argObj = null)
{
_delegateMethod1 = ExecByAsync;
_delegateMethod1.BeginInvoke(argObj, DoneCallBack, _delegateMethod1);
}
DelegateMethod _delegateMethod1;//实例化委托
delegate bool DelegateMethod(object argObj);//声明委托
/// <summary>
/// 回调函数
/// </summary>
void DoneCallBack(IAsyncResult asyncResult)
{
_delegateMethod1.EndInvoke(asyncResult);
}
/// <summary>
/// 异步执行的方法
/// </summary>
bool ExecByAsync(object argObj)
{
//do something..
return true;
}
#endregion
/// <summary>
/// 更新进度(自动处理跨线程的相关操作)
/// </summary>
private void Setlbl(object argMsg)
{
if (lblDealWithProgress.InvokeRequired)
{
var callBack = new InvokeCallBack1(Setlbl);
lblDealWithProgress.Invoke(callBack, new[] { argMsg });
}
else
lblDealWithProgress.Text = argMsg.ToString();
}
private delegate void InvokeCallBack1(object argMsg);
-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
本文深入探讨了在多线程环境下如何通过异步调用方式处理跨线程操作,包括异步方法的定义、委托的使用、回调函数的实现以及如何更新UI线程的进度显示,为读者提供了理解和应用异步编程的实用指南。

被折叠的 条评论
为什么被折叠?



