2012-04-07 51 views
0

所以我很新的C#和我繞過這個問題: 我有一些方法調用不同的代表(具有可能不同的參數類型)。但是,這些代表不應該立即致電。如果主線程正在運行一個委託,它們應該在之後運行,就像排隊委託並稍後運行一樣。
現在我可以使用DynamicInvoke,但我不知道它是否會減慢隊列的速度太慢,除了我知道委託類型是什麼以及它應該查找哪種參數,所以它不是真正的運行時相關的。 請幫助我,如果可以的話,我真的需要一個答案。稍後再打電話給代表。委託隊列

謝謝大家(誰迴應)

+1

我想你可以用無擴展庫做到這一點:http://msdn.microsoft.com/en-us/data/gg577609 – 2012-04-07 19:26:22

回答

1

的方法之一是做,可能是使用的Tasks(從.NET 4.0開始)

會對

Asynchronous methods, C# iterators, and Tasks

怎麼看創建調度任務,就像你的情況一樣。

希望這會有所幫助。

+0

對不起,我只能用.NET 3.5 – Yamcha 2012-04-07 20:47:19

+0

在這一點可能更爲恰當可能實際上是在評論提供了一個選項,讓[無擴展(http://msdn.microsoft.com/en-us/data/gg577609) – Tigran 2012-04-07 20:53:55

+0

@ user1316459:有實際上是另一種解決方案呢,可能更適合調度*,它是[Quartz.NET](http://quartznet.sourceforge.net/)。看看它,可能對你更有用。 – Tigran 2012-04-07 20:58:52

1

如果不是直接添加您的代表,而是將包裝成到代表只是調用它們,傳遞所有參數的新Action委託,它會起作用嗎?例如:

List<Action> pending = new List<Action>(); 
pending.Add(() => MethodThatTakesNoParameters()); 
pending.Add(() => MethodThatTakesOneParameter(param)); 
pending.Add(() => MethodThatTakesThreeParameters(param1, param2, param3));