[問題] Parallel.ForEach平行處理

作者: wind681201 (阿風~~)   2020-04-01 21:57:49
各位大大:
今天用平行處理,發生了很奇怪的事,我有一個funcation a()裡面只有一行,
就是用dapper 去資料庫抓資料,
conn.query(sql);
而conn, 在初始化時,已經建立好,所以想說共用就好。
然後在另一個funcation B()呼叫了a()。
是用Parallel.ForEach,重點來了,我用一般的foreach去跑,很正常。但用平行去跑
卻會在某幾筆資料發生奇怪的錯誤,其中讓我不解的是,conn居然會close。
請問用平行執行,需要注意什麼地方嗎?
作者: luiGiF (luiGif)   2020-04-01 23:12:00
有使用static嗎 ?
作者: wind681201 (阿風~~)   2020-04-02 08:11:00
完全沒有
作者: GoodFriday (好星期五)   2020-04-02 22:21:00
資料庫連線沒有 Thread Safe 所以不能共用
作者: ssccg (23)   2020-04-03 23:25:00
基本上資料庫連線通常每個thread要自己一個資料庫的session/transaction管理都是以連線為單位
作者: wind681201 (阿風~~)   2020-04-05 13:07:00
謝謝各位,我再試看看

Links booklink

Contact Us: admin [ a t ] ucptt.com