2012年2月18日星期六

[IIS]解決IIS 7發生HTTP 錯誤 500.19 - Internal Server Error 無法存取要求的網頁,因為與該網頁相關的設定資料不正確。

 

錯誤訊息如下

 解決方式
1.資料夾=>右鍵內容=>安全性


 

 

 

 

 

 

 

 

 

 

 

2.點選”編輯”=>加入Everyone的權限 =>確定

3.點選"進階"

 

 

 

 

 

 

 

 

 

 

 

 

4.點"Everyone"=>點擊"變更權限"

5.勾選"以這個物件的繼承權限取代所有子物件的權限"












2012年2月17日星期五

[MS SQL]變更資料表發生 防止儲存需要資料表重建的變更

工具->選項->左邊選單 Designers,裡面把防止儲存需要資料表重建的變更,勾選拿掉

2011年12月15日星期四

[WinForm]Form與Form之前的傳遞造成記憶體無法回收解決方式(GC.Collect())

前提:

當有類似A Form呼叫B Form ,使用者須於B處理資料以後,更新回A的需求時,通常會在B的程式裡加上A的屬性,如下:

A Form 畫面

1

2

B Form 畫面

3

4

寫法如下:

B Form定義A Form的屬性,將A Form傳回

public GCTestMain MainForm
{
    get;
    set;
}

因此當B更新資料以後,要傳回給A時,直接呼叫A進行資料更新,並關閉如下:

MainForm.dataGridView1.DataSource = null;
MainForm.dataGridView1.Refresh();

MainForm.dataGridView1.DataSource = this.dataGridView1.DataSource;
MainForm.dataGridView1.Refresh();
this.Close();

但記憶體卻始終沒回收:

5

解決方式:

在B Form呼叫A Form 更新資料以後,強制GC回收,如下:

MainForm.dataGridView1.DataSource = null;
MainForm.dataGridView1.Refresh();
GC.Collect();
GC.WaitForPendingFinalizers();

MainForm.dataGridView1.DataSource = this.dataGridView1.DataSource;
MainForm.dataGridView1.Refresh();
this.Close();

很快的就會看到效果(測試程式裡的GRID有66萬筆資料,所以記憶體佔3百多MB是正常的):

6