C#异步编程案例学习——异步加载大资源文件 2 之 多线程加载

本文具体根据异步加载大资源文件案例中的多线程变成学习

C# 中 BeginInvoke 与 EndInvoke 的一个简单的使用案例

在使用 WPF 开发桌面软件过程中,遇到一个需要预加载大量文件的需求,具体需求如下:

  • 在软件启动后,需要加载大量的 CAD 资源文件,文件供软件中后续使用。
  • 文件加载过程中非常耗时,若同步加载则界面会出现假死的状态。
  • 在文件加载过程中,需要保证界面仍然可以进行其他操作,屏蔽跟资源文件有关的操作。
  • 文件加载完成后,开放跟资源文件有关的操作。

解决方案:
在软件启动后,软件页面正常完成加载后,后台继续进行异步加载资源文件,此时可操作正在加载的资源文件的按钮设置为不可操作。文件加载完成之后开发操作资源文件的按钮可操作。

具体实现如下:

1、WPF 页面 Window 中存在一个事件:ContentRendered。该事件在窗口的内容呈现完毕之后发生。定义一个方法,方法中进行文件加载的操作,并将该方法绑定到 ContentRendered 事件。
代码如下:
其中,LoadingResources() 方法为实际加载文件的方法;
ShowProgressBarFile 方法中具体实现异步,并更改页面按钮状态

private void Window_ContentRendered(object sender, EventArgs e)
{
   
   
    //禁用对应的操作按钮
    this.btnThreeView.IsEnabled = false;

    Func<bool> action = (() => LoadingResources())
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值