当前位置: 首页 > wzjs >正文

广西城乡建设名网站企业网站建设要多少钱

广西城乡建设名网站,企业网站建设要多少钱,网站页面组成部分,11月达感染高峰C#多线程异步连接MySQL与SQLserver数据库 一、前言二、多线程异步连接数据库代码2.1代码块2.2代码说明 参考文档 一、前言 当编写代码连接多台设备上的数据库时,如果采用同步逐个连接的方式,在网络畅通的情况下连接速度尚可,但当其中一台设备…

C#多线程异步连接MySQL与SQLserver数据库

  • 一、前言
  • 二、多线程异步连接数据库代码
    • 2.1代码块
    • 2.2代码说明
  • 参考文档

一、前言

当编写代码连接多台设备上的数据库时,如果采用同步逐个连接的方式,在网络畅通的情况下连接速度尚可,但当其中一台设备网络不佳特别是处于关机状态时,等待数据库连接同时程序无法响应的时间会大幅度增加,即使设置Connect Timeout也无法缩短等待时间,因为此时是程序在等待TCP应答,等待时间通常是由 TCP 协议本身的机制控制。

考虑到此类异常情况的处理,可以使用多线程连接技术,使用线程控制连接超时问题,而异步连接可以在进行连接的同时进行其他操作。

二、多线程异步连接数据库代码

2.1代码块

private async Task<(bool isSuccess, string message)> TryConnectWithTimeoutAsync(object conn, int timeout)
{Stopwatch sw = new Stopwatch();bool connectSuccess = false;string message = "";// 创建取消令牌源CancellationTokenSource cancellationTokenSource = new CancellationTokenSource();CancellationToken token = cancellationTokenSource.Token;// 创建连接任务Task connectTask = Task.Run(() =>{try{sw.Start();if(conn is SqlConnection){((SqlConnection)conn).Open();}if (conn is MySqlConnection){((MySqlConnection)conn).Open();}connectSuccess = true;message = "数据库连接成功";}catch (Exception ex){message = $"数据库连接失败:{ex.Message}";}}, token);// 创建超时任务Task timeoutTask = Task.Delay(timeout, token);// 等待连接任务或超时任务哪个先完成Task completedTask = await Task.WhenAny(connectTask, timeoutTask);if (completedTask == timeoutTask){// 如果超时先完成,取消连接任务cancellationTokenSource.Cancel();message = "数据库连接超时";}return (connectSuccess, message);
}public async Task ConnectMultipleDatabasesAsync(int timeout, List<MySqlConnection> mySqlConnections)
{var tasks = new List<Task>();for (int i = 0; i < mySqlConnections.Count; i++){tasks.Add(TryConnectWithTimeoutAsync(mySqlConnections[i], timeout));}var results = await Task.WhenAll(tasks); // 等待所有任务完成for (int i = 0; i < results.Length; i++){var (isSuccess, message) = results[i];Console.WriteLine($"{message}");}
}

2.2代码说明

上面代码定义了两个异步执行的函数,TryConnectWithTimeoutAsync和ConnectMultipleDatabasesAsync。TryConnectWithTimeoutAsync支持MySQL数据库连接和SQLserver数据库连接返回Tuple类型描述数据库连接情况,执行单个数据库连接任务。
ConnectMultipleDatabasesAsync接受多个数据库连接对象输入,内部调用TryConnectWithTimeoutAsync,进行多个数据库连接任务timeout参数控制每个连接任务超时,单位为毫秒

实际使用时,可通过如下代码进行ConnectMultipleDatabasesAsync调用:

public async void UserFunc(List<MySqlConnection> mySqlConnections)
{await Task.Run(async () =>{await ConnectMultipleDatabasesAsync(mySqlConnections, 5000);//超时等待5000毫秒});
}

参考文档

C# 测试SqlServer连接及设置连接超时时间
C# 控制连接超时处理方法-连接数据库与连接网络路径超时情况

http://www.dtcms.com/wzjs/513865.html

相关文章:

  • 在网上哪个网站可以做兼职上海城市分站seo
  • 瑞安市住房和城乡建设局网站北京百度快照推广公司
  • 重庆网站页面优化网站统计数据分析
  • 电子商务网站规划的内容页面seo优化
  • 关掉自己做的网站站群seo技巧
  • 凡科网免费做网站郑州网站推广哪家专业
  • 网站建设的目的模板百度电话号码查询
  • 银川做网站推广云服务器免费
  • 东莞网站推广外包写软文能赚钱吗
  • 天津网站建设平台识图找图
  • 广州平台网站建设百度seo网站在线诊断
  • 沈阳模板建站哪家好百度搜索排名优化
  • 装修网站怎么做的好处网站设计制作
  • 昆明做网站外包百度收录权重
  • 用html5做京东网站代码进入百度官网
  • sousou提交网站入口网上国网app推广
  • 微信扫一扫登录网站如何做如何建立个人网址
  • win2012做网站北京网站优化快速排名
  • 和平天津网站建设百度经验悬赏令
  • 刚做的网站在百度上搜不到整站seo优化公司
  • 信誉好的商城网站建设查网站
  • wordpress自媒体主题破解南昌搜索引擎优化
  • 做考研政治真题的网站百度推广登录平台
  • 浙江艮威水利建设有限公司网站快速网站排名提升
  • 南昌网站推广公司网络广告推广方案
  • 小说网站如何做书源滨州seo排名
  • 做外贸去哪个网站找客户百度号码认证平台官网
  • 用织梦建手机网站免费私人网站建设软件
  • 苍南网站建设公司百色seo快速排名
  • 有教做鱼骨图的网站吗关于友情链接说法正确的是