首页 > 其他分享 >异步锁死

异步锁死

时间:2023-06-09 13:47:25浏览次数:16  
标签:异步 Task Text private DateTime ToString 锁死 Now

 

异步函数testAsync

private async Task<string> testAsync()
{
await Task.Delay(3000);
return DateTime.Now.ToString();
}

//以下程序调用会锁死,应该是子函数中的Delay和主函数中的this.Text = t.Result;互相锁住了

private void button1_Click(object sender, EventArgs e)
{
Task<string> t = this.testAsync();
this.textBox1.Text = DateTime.Now.ToString();
this.Text = t.Result;
this.textBox2.Text = DateTime.Now.ToString();
}

//以下程序可以正常执行

private async void button3_Click(object sender, EventArgs e)
{
this.Text = await this.testAsync();
this.textBox1.Text = DateTime.Now.ToString();
}

//以下程序可以正常执行,就是说调用异步函数时,主函数必须也要await

private void button2_Click(object sender, EventArgs e)
{
Task t= test2();
}

private async Task test2()
{
Task<string> t = this.testAsync();
this.textBox1.Text = DateTime.Now.ToString();
this.Text = await t;
this.textBox2.Text = DateTime.Now.ToString();
}

标签:异步,Task,Text,private,DateTime,ToString,锁死,Now
From: https://www.cnblogs.com/81/p/17468995.html

相关文章

  • Python 协程池,异步IO非阻塞式,http 请求
    先写个FlaskdemoimporttimefromflaskimportFlaskapp=Flask(__name__)@app.route('/<id>')defhello(id):time.sleep(2)return'Hello,World!:%s'%idif__name__=='__main__':app.run()协程请求import......
  • jQuery中异步交互技术详细指南
                                                                                                                                      ......
  • Java 的 8 种异步实现方式
    异步的八种实现方式线程ThreadFuture异步框架CompletableFutureSpring注解@AsyncSpringApplicationEvent事件消息队列第三方异步框架,比如Hutool的ThreadUtilGuava异步1.线程异步public class AsyncThread extends Thread {    @Override    public vo......
  • element-ui中Select 选择器异步加载下一页
    场景当我们使用Select选择器存放大量数据的时候。会发现存在这么2个问题。1.接口响应时间较长。(因为数据量较多,一次查询的所有)甚至有可能超时。2.前端下拉框滑动卡顿。这个时候们如何解决上面面临的问题呢?有的小伙伴可能会说:1.分页加载。确实是可以解决问题。2.页面卡顿......
  • 异步调用方法并弹出处理中窗体(转载)---线程池的封装
    原文链接:[C#]非同步呼叫方法並跳出處理中視窗|愛流浪的小風-點部落(dotblogs.com.tw)前言 當我們在Winform進行某些比較花時間的運算時,若沒有使用非同步的方法來呼叫,畫面上的視窗就會顯示沒有回應,這是一種比較差的使用者體驗,可能會讓使用者以為當機了,在這邊為了方便......
  • fastapi 异步应用
    #定义一个专门创建事件循环loop的函数,在另一个线程中启动它defstart_loop(loop):asyncio.set_event_loop(loop)loop.run_forever()@app.get("/addr")defindex(adcode:str=None,address:str=None,level:str=None):importtimemessage={"......
  • 异步线程解决seata事务1000问题
    原因:seata1.5.0以下版本,事务执行sql超过1000,会抛出异常。解决方案:部分sql使用异步线程。实现方式:1、初始化异步线程池@Configuration@EnableAsyncpublicclassThreadAsyncConfigimplementsAsyncConfigurer{/***线程配置参数*/@Autowiredpr......
  • 循环中调用异步接口获取数据
      //查询人员列表  asyncgetPersonList(){   const_this=this;   constdata=awaitgetPersonList(this.formSearch);   console.log("data",data);   varpromiseList=[];   data.forEach((element,inds)=>{   ......
  • C# 异步编程
     基于Task的异步编程模式(TAP)是Microsoft为.Net平台下使用Task进行编程所提供的一组建议,这种模式提供了可以被await消耗(调用)方法的APIs,并且当使用async关键字编写遵守这种模式的方法时,手写Task通常很有用。通常TAP用起来与普通方式没什么两样,但是不支持ref和out参数。   任务......
  • 异步编程async体会
    namespace异步编程{classProgram{staticvoidMain(string[]args){Console.WriteLine("mianthisisasync{0}",Thread.CurrentThread.ManagedThreadId);Do();......