WPF:Task与事件在下载同步界面中的应用

Posted 程序猿kid

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WPF:Task与事件在下载同步界面中的应用相关的知识,希望对你有一定的参考价值。

//设置一个下载事件类,可传输一个字符串

 public class DownloadEventArgs:EventArgs
    {
        public string id { get; set; }
        public DownloadEventArgs(string m)
        {
            id = m;
        }
 
    }


//下载中事件

        public delegate void DownloadingEvent(object sender, DownloadEventArgs e);
        public event DownloadingEvent _DownloadingEvent;

 // TODO 下载按钮
        void DownLoad_Click(object sender, RoutedEventArgs e)
        {
            if (sender is Button)
            {
                Button temp = sender as Button;
                if (temp.Tag == null) { return; }
                string id = temp.Tag;
                if ( id == null) { return; }
                Task.Factory.StartNew(() =>
                {
                   //发送下载中事件
                            DownloadEventArgs downloading = new DownloadEventArgs(id);
                            _DownloadingEvent(temp, downloading);
                }).ContinueWith(x =>
                {
                    this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (ThreadStart)delegate()
                    {
                        temp.IsEnabled = false;
                    });
                });
            }
        }

//应用事件改变按钮样式
void main()
{
  Button DownloadButton = new Button();
  _DownloadingEvent += (a, b) =>
                        {
                            if (_DownloadingEvent != null)
                            {
                                if (b.id == a.Tag)
                                {
                                    DownloadButton.IsEnabled = false;
                                    DownloadButton.Content = "下载中";
                                }
                            }
                        }; 
}

 

以上是关于WPF:Task与事件在下载同步界面中的应用的主要内容,如果未能解决你的问题,请参考以下文章

从 iOS 日历事件同步到我们的应用程序的 2 种方式

工作线程中的同步与异步 ioctl

EtherCAT 同步模式

vs2005写winform应用程序时,代码与界面不同步。debug后还显示的是最早的结果。如何解决啊?

使用 Windows 中的事件同步线程

Firebase 是不是会在应用关闭时同步记录的事件?