為什麼需要非同步程式設計

Posted by on | | 0 意見
ASP.NET 會使用 Common Language Runtime (CLR) 執行緒集區中的執行緒來處理要求。
一旦執行緒集區呈現飽和狀態 (也就是說,其中的所有執行緒都在忙著處理要求,沒有可用的其餘執行緒),
對新的要求回應「辦不到」。

解決方案:
  1. 就是增加執行緒集區的大小上限,以便建立更多的執行緒。
  2. 另一個常見的做法就是投入更多的硬體,亦即在 Web 伺服陣列中加入更多的伺服器。
  3. 非同步程式設計。

真正可擴充的 ASP.NET 網站能夠對執行緒集區做最佳的利用,而不是在等待 I/O 完成。
如果執行緒集區是因為所有執行緒都已經在 CPU 上持續運作而呈現飽和狀態,您才需要新增伺服器。


ASP.NET 支援三個非同步程式設計模型:
  1. 非同步網頁
  2. 非同步 HTTP 處理常式
  3. 非同步 HTTP 模組

請參考http://msdn.microsoft.com/zh-tw/magazine/cc163463.aspx

ASP.NET 在web page上執行非同步的任務。

Posted by on | | 0 意見
ASP.NET 在web page上執行非同步的任務。

有些重點要注意:
(http://msdn.microsoft.com/zh-tw/library/system.web.ui.page.executeregisteredasynctasks(VS.80).aspx)
在頁面處理過程中,針對不是非同步頁面叫用任何已註冊的非同步工作 (如果有的話) 時,
會自動呼叫 ExecuteRegisteredAsyncTasks 方法。
在 PreRenderComplete 事件之前,發生對 ExecuteRegisteredAsyncTasks 的自動呼叫。
除了對這個方法的自動呼叫以外,您也可以針對所要叫用的工作呼叫 ExecuteRegisteredAsyncTasks 方法。
請注意,即使可以多次呼叫 ExecuteRegisteredAsyncTasks,但非同步工作只能執行一次。

每次呼叫 ExecuteRegisteredAsyncTasks 方法時,AsyncTimeout 屬性會重設。
叫用 ExecuteRegisteredAsyncTasks 方法前 AsyncTimeout 的最後一個值為優先。

步驟:
1.在aspx頁面上要加入 Async="true"。
2.建立一個PageAsyncTask。
3.在page上註冊,RegisterAsyncTask。
4.如上重點所述,在 PreRenderComplete 事件之前,會自動呼叫註冊的PageAsyncTask。

程式碼:
MyObject tmpObj = new MyObject();
PageAsyncTask tmpTask = new PageAsyncTask(tmpObj.OnBegin,
           tmpObj.OnEnd,
           tmpObj.OnTimeout,
           null
       );
this.Page.RegisterAsyncTask(tmpTask);

Mac MINI 的吸入式光碟

Posted by on | | 0 意見
不知為何Update mac時,重新開機後,就進入了"藍色畫面",就粉藍色的,什麼訊息也沒有,開了一整天,還是在同樣的畫面裡,網路上查查,好像只能重灌的樣子,殘念啊.....

重點是,有片光碟在裡頭,無法開機完成,開機過程中,按退片鍵也沒有用,因為是吸入式的,也沒有小孔可以讓人用力戳,怎麼辦啊?不會是要送修,或是把它給解體吧!

不信邪,努力的拜託Google大神,用力的一篇一篇的文章給它看下去,原來,在開機時,"按住"滑鼠左鍵,不是多按幾次喔,而是一直按著不放,光碟就會被退出來了,so gooooooood!

下一步,就是再找找看,有沒有救回小白的機會了!我懶的重灌啊!