[C#] File.Create 鎖定檔案

  • 16791
  • 0
  • C#
  • 2016-10-21

由於很久沒有寫Stream.IO 的相關程式,剛好今天有一個需求是Parser 文件,「判斷檔案是否存在,不存在就建立新的檔案,存在就寫檔」,

結果碰到一個寫檔入門常見的錯誤,

類型 'System.IO.IOException' 的未處理例外狀況發生於 mscorlib.dll 其他資訊: 由於另一個處理序正在使用檔案 'C:\Users\Administrator\Desktop\xxxx.xml',所以無法存取該檔案。

直覺反應這是串流沒有被正常關閉,導致另一個串流想要IO的時候被Lock 住了。

...繼續閱讀 »

[NHibernate] NotFound.Ignore

產品會使用NHibernate 的Lazy Loading來找尋關聯資料,

但如果沒有資料的時候就會拋出 NHibernate.ObjectNotFoundException

是因為NHibernate 底層預設是找不到資料時會 throw Excetion 出來,這會讓我們在操作上有很大的困擾,

如下圖:


 

...繼續閱讀 »

[jQuery] event.preventDefault() 與 event.stopPropagation() 的差異

我們在撰寫前端畫面時,常常會使用 return false 來終止函數運行,其實return false 會包含以下三種行為:

  1. event.preventDefault()
  2. event.stopPropagation()
  3. 停止函數並回傳

第三點應該大家都知道,畢竟寫 return false 就是為了這件事情呀,但是大家不知道其實JavaScript 默默幫我做了1跟2,結果可是差很多的呢!

...繼續閱讀 »

[VS] 建置後的事件!

最近產品剛好有一個特殊的需求,就是專案建置好後,要把專案建置出來的東西搬到特定目錄下,

讓另一支程式去該目錄底下,呼叫我們建置好的dll,

先前我自己寫了一個cmd檔,每次建置完成後再手動去執行該cmd,

該cmd就會幫我把dll搬到我要的路徑底下,但是這樣好麻煩啊,每次都還要手動執行,

有時候換人建置時對方還會忘記這個動作,導致系統異常,

前輩就跟我說VS本身很像有提供建置前後的事件,可以幫我做類似的事情,

...繼續閱讀 »

[LINQ] Union 注意事項!

今天同仁詢問我用LINQ Select 新物件出來,是否可以 Union 在一起,直覺反映說:「可以呀!欄位一樣應該就可以吧!」,同仁回覆說他嘗試很久都無法成功Union,後來發現我們忽略了一個重要的地方,Code 如下:

...繼續閱讀 »

[SMTP] 郵件主旨亂碼!

今天發現一個 bug 為郵件主旨(附件)在某些情形下變成亂碼,查了一下資料,發現是.Net Framework 4的 bug 而且是個陳年 bug 呀,發生的原因為字串含有非 ASCII 編碼的字元,且長度又超過 41 個 UTF-8 Encode Bytes 時,就會被重複Encode兩次,導致顯示成亂碼。

解決方案有安裝微軟的Hotfix或升級,當然今天不是要介紹這個方法,而是在無法升級的情形下該如何解決?

...繼續閱讀 »

[LINQ] 增加可讀性的好寫法!

今天幫同仁 Code Review 發現他寫了一段雙層迴圈,但是其實可以用一段 LINQ 就解決掉,如下:

前情提要:

系統有數種的辦理方式,這裡簡稱A、B、C 與 D,同一時間點同一個單號可以做複數個辦理方式,並且把做過的辦理方式以字串方式儲存,

例如做過「A 與 C」那DB會存 “A, B”,到前端來在用Split的方式來看剛單號做哪哪些辦理。

...繼續閱讀 »

[Web APIs] DOM MutationObserver

當我們在寫Web時,常常會不知覺的用了許多 API 來幫助我們開發,像是上篇的「[jQuery] Global Ajax Event Handlers」也是其中一種。

然而我們常常會使用這些功能,卻不清楚其來由,懵懵懂懂的很容易會有一些錯誤觀念或者錯誤的使用方法,及「知其然,而不知其所以然」的現象,因此在日後的文章有機會會在特別詳述原理的部分。

今天要介紹的是 MutationObserver 不是 MutationEvents ,兩者都是在監聽 DOM 有被異動時,需要做一些相對應的事情;     

...繼續閱讀 »