我很好奇其他開發人員如何使用委託和/或事件而不是響應UI事件?我個人不會將它們用於除UI事件之外的其他任何事情,但我強烈地感覺到我錯過了代表和事件的力量。所以我向SO社區提出這個問題,以便我可以得到一些關於如何將這些工具添加到我的庫中的想法。您以何種方式使用UI以外的代理和/或事件?
4
A
回答
1
活動非常平凡。大多數情況下,您將使用它們來響應UI或開發必須通知用戶狀態更改的組件。打哈欠。
然而,代表們充滿了真棒和勝利。可能最常見的用途是Linq。 Linq使用各地的lambda,這是速記代表。
var numbers = new int[]{1,2,3,4,5};
var evenStevens = numbers.Where(x => x % 2 == 0);
另一個常見的用途是在多線程:
ThreadPool.QueueUserWorkItem(o => DoWork(o));
當我使用他們,我最喜歡的是的HtmlHelper擴展方法混合渲染HTML代碼隱藏有:
/// <summary>
/// Helps render a simple list of items with alternating row styles
/// </summary>
/// <typeparam name="T">The type of each data item</typeparam>
/// <param name="html">The HtmlHelper.</param>
/// <param name="rows">The list of items</param>
/// <param name="rowTemplate">The row template.</param>
/// <param name="evenCssClass">The even row CSS class.</param>
/// <param name="oddCssClass">The odd row CSS class.</param>
public static void SimpleList<T>(
this HtmlHelper html,
IEnumerable<T> rows,
Action<T, string> rowTemplate,
string evenCssClass,
string oddCssClass)
{
var even = false;
foreach (var row in rows)
{
rowTemplate(row, even ? evenCssClass : oddCssClass);
even = !even;
}
}
其在aspx文件中使用的示例:
<div id="nodes" class="scrollingBlock">>
<% Html.SimpleList(
Model.Nodes,
(d, css) =>
{%>
<div class='<%=css%>'><%=d.Name %></div>
<%}, "evenRow", "oddRow");%>
</div>
2
在任何情況下,您正在傾聽可能隨時出現的事件;例如異步偵聽套接字,讀取XML文件等。
0
事件對於您可能設置的任何類型的狀態機都是完美的。您針對每個狀態更改發佈了不同的事件,從而允許您的程序對這些更改做出反應。
事件的另一種用法可能是讓您知道何時從某個長時間運行的任務中解析或下載了新記錄。例如,您可能有一個控制器對象,用於下載大型XML文件並從中解析記錄。每次成功解析文件中的新記錄時,您可能會讓該控制器觸發一個事件。
0
我已經使用事件來通知一些控制類關於長時間運行的應用程序中的當前狀態。
在我的情況下,我正在更新一個帶有新固件的Windows CE設備,它可能需要長達15分鐘,所以我會讓控制器知道何時更新了一行,並且會通過調用另一行來更新進度欄事件。
如前所述,如果您需要知道不同線程中發生了什麼,那麼事件會很有幫助,尤其是在操作需要大量時間的情況下。
相關問題
- 1. 以好的方式處理/設計C#中的事件使用
- 2. SVDLIB應以何種方式使用?
- 3. 以編程方式讓Jquery UI fire事件更改事件?
- 4. 以編程方式使用事件處理程序的C#+
- 5. 我如何使用PHP代碼以這種方式
- 6. 以編程方式創建的控件檢測iOS UI事件
- 7. 您可以重用XML的片段(以某種變量/引用方式)嗎?
- 8. Flex:以不同的方式處理鼠標和觸摸事件
- 9. 任何替代方式寫入文件以外的文件
- 10. 您可以在XML和XMLHttpRequest之外使用其他格式嗎?
- 11. 爲什麼「或」以這種方式行事?
- 12. 創建變量或方法以使用多種形式的值
- 13. 如何以編程方式檢查外觀代理?
- 14. 如何以編程方式創建事務代理?
- 15. 以兩種形式使用一個控件的最佳方式
- 16. 代碼以某種方式迴應\ n
- 17. 深入到事件以外的方法
- 18. 以編程方式觸發單元測試的UI事件
- 19. 以兩種方式使用Fgets
- 20. 我可以移動beaker.SessionMiddleware以某種方式處理方法嗎?
- 21. Symfony以一種形式提交事件
- 22. 以其他方式使用try/catch,但以條件爲例外?
- 23. 如何以合理的方式驗證大量事件
- 24. 以編程方式或由用戶提供的jquery easyui事件
- 25. 如何使用gulp以多種方式處理一個src文件?
- 26. 有沒有人以這種方式設計api或庫代碼?
- 27. 您可以設置Axis以編程方式使用HTTP/1.0嗎?
- 28. 的sed以某種方式
- 29. Javascript - 以編程方式調用事件
- 30. 在這種情況下,我可以使用PRG以外的其他模式或方法嗎?