栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > .Net

异步线程使用的阻塞问题async await 举例

.Net 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

异步线程使用的阻塞问题async await 举例

问题描述:我们在按钮事件下直接调用异步线程,会出现阻塞,程序卡死现象。如图点击直接运行按钮的效果
解决方法:在线程内运行异步线程,可以解决阻塞问题。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication5
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            
        }

    
        private  int PointWork(int i)
        {
            return i;
        }
        private  async Task OnePointWorAscnic(int i)
        {
           
            int m = await Task.Run(() => PointWork(i));
            return m;
        }
        public  void Work()
        {
            List> TaskList = new List>();
            List points = new List { 1, 2, 3 };
            foreach (var i in points)
            {
                Task m = OnePointWorAscnic(i);
                TaskList.Add(m);
            }
            foreach (var task in TaskList)
            {
                int j = task.Result;             
            }
            MessageBox.Show("运行完成");
        }
        private void button1_Click(object sender, EventArgs e)
        {
            Work();
        }
        private void button2_Click(object sender, EventArgs e)
        {
            Task.Run(() => Work());
        }
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/911268.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号