2008/11/06

.Net 非同步呼叫執行function



//宣告:
delegate void CallRefreshServerIpsDelegate(int aaa, int bbb, string logPath);

//使用:
CallRefreshServerIpsDelegate dlgt = new CallRefreshServerIpsDelegate(this.CallRefreshServerIps);
dlgt.BeginInvoke(aaa, bbb, logPath, null, null);

//Function:
private void CallRefreshServerIps(int aaa, int bbb, string logPath )
{
...

}


注意: 非同步的呼叫,在function內不可存在任何有關HttpWebRequest、HttpWebResponse的物件。
例如:
Request.ServerVariables["REMOTE_ADDR"] ...

.Net Regex.Replace 造成CPU Loading 升高....

這二天公司遇到怪事,所有伺服器主機突然CPU飆高到100%,在同事徹夜努力下才找出問題,原來出在一句Regex.Replace的語法...

.NET的Regex.Replace很奇怪,在樣本文檔內若找不到符合pattern的條件,就會hand住,然後CPU飆高...但若樣本文檔內找得到,則又沒事...

同事給我一個參考連結:

CODING HORROR : Regex Performance

文章內可以看到,在不符合pattern的情況下,回應時間是倍數的成長,這就是造成效能下降的主因!

因此,爾後在使用Regex.Replace時,最好能先使用Regex.Match確認一下,再做Replace,以避免此情況發生。

其他參考資料:

軟體工程的重要的指標