public static class ExtensionMethods
{
public static Task InvokeAsync(this Control ctrl, Action action)
{
return Task.Factory.FromAsync(ctrl.BeginInvoke(new Action(() =>
{
action?.Invoke();
})), ctrl.EndInvoke);
}
public static Task InvokeAsync<T>(this Control ctrl, Action<T> action, T t)
{
return Task.Factory.FromAsync(ctrl.BeginInvoke(new Action<T>(c =>
{
action?.Invoke(c);
}), t), ctrl.EndInvoke);
}
public static Task InvokeAsync<T>(this Control ctrl, Func<T> func)
{
return Task.Factory.FromAsync(ctrl.BeginInvoke(new Func<T>(() =>
{
return func.Invoke();
})), ctrl.EndInvoke);
}
public static async Task InvokeAsync2(this Control ctrl, Action action)
{
if (ctrl.Disposing || ctrl.IsDisposed || !ctrl.IsHandleCreated)
return;
if (!ctrl.InvokeRequired)
{
action.Invoke();
return;
}
await Task.Factory.FromAsync(ctrl.BeginInvoke(new Action(() =>
{
if (ctrl.Disposing || ctrl.IsDisposed || !ctrl.IsHandleCreated)
return;
action?.Invoke();
})), ctrl.EndInvoke);
}
}
winform Invoke
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 最终效果 本实例实现时主要用到了NotifyIcon控件的ShowBalloonTip方法。NotifyIcon控...
- 之前由于需要,使用了c#的winform写了个桌面应用。后面我把 在此基础上把页面(UI)、业务层(BLL) 和数...
- 随笔背景:在很多时候,很多入门不久的朋友都会问我:我是从其他语言转到C#开发的,有没有一些基础性的资料给我们学习学...
- 随笔背景:在很多时候,很多入门不久的朋友都会问我:我是从其他语言转到C#开发的,有没有一些基础性的资料给我们学习学...
- 1、Winform数据访问模式定义 传统的Winform程序模块:用于传统的数据库通讯获取数据,这种方式获取数据,...