中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

淮安網(wǎng)站排名優(yōu)化公司自助建站系統(tǒng)哪個好

淮安網(wǎng)站排名優(yōu)化公司,自助建站系統(tǒng)哪個好,宿遷做網(wǎng)站哪家好,wordpress o2oC#多線程異步連接MySQL與SQLserver數(shù)據(jù)庫 一、前言二、多線程異步連接數(shù)據(jù)庫代碼2.1代碼塊2.2代碼說明 參考文檔 一、前言 當編寫代碼連接多臺設備上的數(shù)據(jù)庫時,如果采用同步逐個連接的方式,在網(wǎng)絡暢通的情況下連接速度尚可,但當其中一臺設備…

C#多線程異步連接MySQL與SQLserver數(shù)據(jù)庫

  • 一、前言
  • 二、多線程異步連接數(shù)據(jù)庫代碼
    • 2.1代碼塊
    • 2.2代碼說明
  • 參考文檔

一、前言

當編寫代碼連接多臺設備上的數(shù)據(jù)庫時,如果采用同步逐個連接的方式,在網(wǎng)絡暢通的情況下連接速度尚可,但當其中一臺設備網(wǎng)絡不佳特別是處于關(guān)機狀態(tài)時,等待數(shù)據(jù)庫連接同時程序無法響應的時間會大幅度增加,即使設置Connect Timeout也無法縮短等待時間,因為此時是程序在等待TCP應答,等待時間通常是由 TCP 協(xié)議本身的機制控制。

考慮到此類異常情況的處理,可以使用多線程連接技術(shù),使用線程控制連接超時問題,而異步連接可以在進行連接的同時進行其他操作。

二、多線程異步連接數(shù)據(jù)庫代碼

2.1代碼塊

private async Task<(bool isSuccess, string message)> TryConnectWithTimeoutAsync(object conn, int timeout)
{Stopwatch sw = new Stopwatch();bool connectSuccess = false;string message = "";// 創(chuàng)建取消令牌源CancellationTokenSource cancellationTokenSource = new CancellationTokenSource();CancellationToken token = cancellationTokenSource.Token;// 創(chuàng)建連接任務Task connectTask = Task.Run(() =>{try{sw.Start();if(conn is SqlConnection){((SqlConnection)conn).Open();}if (conn is MySqlConnection){((MySqlConnection)conn).Open();}connectSuccess = true;message = "數(shù)據(jù)庫連接成功";}catch (Exception ex){message = $"數(shù)據(jù)庫連接失敗:{ex.Message}";}}, token);// 創(chuàng)建超時任務Task timeoutTask = Task.Delay(timeout, token);// 等待連接任務或超時任務哪個先完成Task completedTask = await Task.WhenAny(connectTask, timeoutTask);if (completedTask == timeoutTask){// 如果超時先完成,取消連接任務cancellationTokenSource.Cancel();message = "數(shù)據(jù)庫連接超時";}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代碼說明

上面代碼定義了兩個異步執(zhí)行的函數(shù),TryConnectWithTimeoutAsync和ConnectMultipleDatabasesAsync。TryConnectWithTimeoutAsync支持MySQL數(shù)據(jù)庫連接和SQLserver數(shù)據(jù)庫連接返回Tuple類型描述數(shù)據(jù)庫連接情況,執(zhí)行單個數(shù)據(jù)庫連接任務。
ConnectMultipleDatabasesAsync接受多個數(shù)據(jù)庫連接對象輸入,內(nèi)部調(diào)用TryConnectWithTimeoutAsync,進行多個數(shù)據(jù)庫連接任務timeout參數(shù)控制每個連接任務超時,單位為毫秒

實際使用時,可通過如下代碼進行ConnectMultipleDatabasesAsync調(diào)用:

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

參考文檔

C# 測試SqlServer連接及設置連接超時時間
C# 控制連接超時處理方法-連接數(shù)據(jù)庫與連接網(wǎng)絡路徑超時情況

http://m.risenshineclean.com/news/63738.html

相關(guān)文章:

  • 做網(wǎng)站費免圖片網(wǎng)站站長工具
  • 北京移動端網(wǎng)站開發(fā)網(wǎng)絡營銷策劃總結(jié)
  • 深圳做網(wǎng)站的公司哪家好做網(wǎng)站好的網(wǎng)站建設公司
  • 網(wǎng)站用什么系統(tǒng)好用網(wǎng)站推廣100種方法
  • 中文 域名的網(wǎng)站網(wǎng)站seo基本流程
  • 健身網(wǎng)站建設百度收錄快的發(fā)帖平臺
  • 怎么建企業(yè)網(wǎng)站網(wǎng)絡平臺推廣具體是怎么推廣
  • 維護一個網(wǎng)站一年多少錢淘寶關(guān)鍵詞排名查詢工具免費
  • .ai域名注冊網(wǎng)站公司網(wǎng)站建設代理
  • 編程網(wǎng)課哪家好seo門戶
  • 網(wǎng)站關(guān)鍵詞怎么做百度怎么推廣自己的視頻
  • 建設網(wǎng)站需要什么技術(shù)支持360優(yōu)化大師官方下載
  • 對運營網(wǎng)站有什么見解百度推廣年費多少錢
  • 做物流的在什么網(wǎng)站找客戶呢推廣互聯(lián)網(wǎng)推廣
  • 金昌市建設局網(wǎng)站朝陽網(wǎng)絡推廣
  • 企業(yè)網(wǎng)站案例企業(yè)網(wǎng)絡推廣的方式有哪些
  • wordpress生成靜態(tài)頁滎陽網(wǎng)站優(yōu)化公司
  • 網(wǎng)站開發(fā)要用到的工具鄭州網(wǎng)絡營銷公司哪家好
  • 東營網(wǎng)站建設公司廣告聯(lián)盟論壇
  • 不知道我自己的網(wǎng)站的ftp賬號百度點擊快速排名
  • 上弘科技網(wǎng)站建設百度新聞搜索
  • 河南建設銀行官方網(wǎng)站網(wǎng)址域名大全
  • 茌平網(wǎng)站建設費用網(wǎng)店運營公司
  • 漳州市住房建設局網(wǎng)站營銷型網(wǎng)站建設策劃書
  • 網(wǎng)站百度權(quán)重廣東疫情最新消息
  • 蘇州做網(wǎng)站公司電話十大免費引流平臺
  • 沈陽市網(wǎng)站建設企業(yè)網(wǎng)站推廣和優(yōu)化系統(tǒng)
  • 邵陽疫情最新消息情況南寧百度推廣seo
  • 縣政府網(wǎng)站建設報告如何宣傳推廣自己的店鋪
  • 青島網(wǎng)站設計電話引擎網(wǎng)站