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

网站设计公司网站自驾旅游服务网站开发文献综述

网站设计公司网站,自驾旅游服务网站开发文献综述,个人静态网页学生作业,上市公司做网站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.15wanjia.com/news/156727.html

相关文章:

  • 网站建设需要哪些工具与知识怎么做才能让网站快速收录
  • 深圳商务网站建设辽宁省工程建设信息网官网
  • 分类网站怎么做项目产品50个关键词
  • 国内做免费视频网站电脑配件电子商务网站设计方案
  • wang域名注册网站济阳县做网站公司
  • 3d网站建设方案肥料网站建设
  • 郓城县建设局网站福建建设厅官方网站
  • 宁波led网站建设赣州吾往矣网络科技有限公司
  • 网站目录创建下载链接农村网站建设必要性
  • 做网站和编程序网上建设网站
  • 沈阳沈河区网站建设软件网站开发平台
  • 个人网站可以做产品宣传吗天元建设集团有限公司衡阳分公司
  • 在淘宝做网站和网络公司做网站区别半岛建设公司网站
  • 广东网站开发公司电话湘潭正规seo优化
  • 云南大永高速公路建设指挥部网站青岛做网站哪个最好
  • 如何让一个网站排名掉做设计最好的参考网站
  • 冯站长之家兼职网站建设推广人才
  • 电视直播网站开发惠州做网站公司哪家好
  • 网站开发师怎么用php安装wordpress
  • 有关网站建设文章做网站需要多久
  • 重庆网站建站wordpress导入媒体失败
  • 网站开发都做什么网站建设基本内容
  • 网站发帖做业务网站开发朋友圈
  • 《网站建设》期末考试编程培训
  • 在eclipse中做网站开发有那些做自媒体短视频的网站
  • 青之峰网站建设类似猪八戒的网站建设
  • 软件定制开发系统商城网站建设优化推广
  • 做公司网站需要注意哪些中国铁建华南建设有限公司网站
  • 如何做网站数据库南阳网站推广公司
  • 企业的建站方式wordpress访问慢