[問題] Parallel.ForEach平行處理

看板C_Sharp作者 (阿風~~)時間4年前 (2020/04/01 21:57), 編輯推噓0(006)
留言6則, 4人參與, 4年前最新討論串1/1
各位大大: 今天用平行處理,發生了很奇怪的事,我有一個funcation a()裡面只有一行, 就是用dapper 去資料庫抓資料, conn.query(sql); 而conn, 在初始化時,已經建立好,所以想說共用就好。 然後在另一個funcation B()呼叫了a()。 是用Parallel.ForEach,重點來了,我用一般的foreach去跑,很正常。但用平行去跑 卻會在某幾筆資料發生奇怪的錯誤,其中讓我不解的是,conn居然會close。 請問用平行執行,需要注意什麼地方嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 180.183.119.191 (泰國) ※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1585749473.A.D2B.html

04/01 23:12, 4年前 , 1F
有使用static嗎 ?
04/01 23:12, 1F

04/02 08:11, 4年前 , 2F
完全沒有
04/02 08:11, 2F

04/02 22:21, 4年前 , 3F
資料庫連線沒有 Thread Safe 所以不能共用
04/02 22:21, 3F

04/03 23:25, 4年前 , 4F
基本上資料庫連線通常每個thread要自己一個
04/03 23:25, 4F

04/03 23:25, 4年前 , 5F
資料庫的session/transaction管理都是以連線為單位
04/03 23:25, 5F

04/05 13:07, 4年前 , 6F
謝謝各位,我再試看看
04/05 13:07, 6F
文章代碼(AID): #1UX9tXqh (C_Sharp)