<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:evnet="http://www.mscommunities.com/rssmodule/"><channel><title>Comment Feed for CCR Programming - Jeffrey Richter and George Chrysanthakopoulos (Going Deep on Channel 9)</title><atom:link rel="self" type="application/rss+xml" href="http://channel9.msdn.com/shows/going+deep/ccr-programming-jeffrey-richter-and-george-chrysanthakopoulos/rss/default.aspx" /><image><url>http://mschnlnine.vo.llnwd.net/d1/Dev/App_Themes/C9/images/feedimage.png</url><title>Comment Feed for CCR Programming - Jeffrey Richter and George Chrysanthakopoulos (Going Deep on Channel 9)</title><link>http://channel9.msdn.com/shows/Going+Deep/CCR-Programming-Jeffrey-Richter-and-George-Chrysanthakopoulos/</link></image><description>CCR Programming - Jeffrey Richter and George Chrysanthakopoulos</description><link>http://channel9.msdn.com/shows/Going+Deep/CCR-Programming-Jeffrey-Richter-and-George-Chrysanthakopoulos/</link><language>en-us</language><pubDate>Wed, 04 Jul 2007 14:21:48 GMT</pubDate><lastBuildDate>Wed, 04 Jul 2007 14:21:48 GMT</lastBuildDate><generator>EvNet (EvNet, Version=1.0.3243.35083, Culture=neutral, PublicKeyToken=null)</generator><item><title>Re: CCR Programming - Jeffrey Richter and George Chrysanthakopoulos</title><description>Hai , &lt;br /&gt;&lt;br /&gt;This is sukumar . i am very new is this site. i want to implement CCR concept in my project . i&amp;nbsp; gone through this video file(http://channel9.msdn.com/ShowPost.aspx?PostID=143582) but i didnt get properly .if u have any document abt CCR plz send to my&amp;nbsp; inbox. its help for my team . &lt;br /&gt;&lt;br /&gt;my mail id : honeysukumar@yahoo.com&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;</description><comments></comments><link>http://channel9.msdn.com/shows/Going+Deep/CCR-Programming-Jeffrey-Richter-and-George-Chrysanthakopoulos/?CommentID=322693</link><pubDate>Wed, 04 Jul 2007 14:21:48 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/shows/Going+Deep/CCR-Programming-Jeffrey-Richter-and-George-Chrysanthakopoulos/?CommentID=322693</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/322693/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>Hai , This is sukumar . i am very new is this site. i want to implement CCR concept in my project . i&amp;nbsp; gone through this video file(http://channel9.msdn.com/ShowPost.aspx?PostID=143582) but i didnt get properly .if u have any document abt CCR plz send to my&amp;nbsp; inbox. its help for my team .&amp;#8230;</evnet:previewtext><dc:creator>sukumar</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/322693/Trackback.aspx</trackback:ping></item><item><title>Re: CCR Programming - Jeffrey Richter and George Chrysanthakopoulos</title><description>Thanks George - I appreciate the quick reply.. I'll post any further questions on the newsgroup. It would in fact be quite helpful to have a subsection specific to CCR. The application I'm doing a 'proof-of-concept' for is within the context of asycnhronous web services (asp.net/wse3.0), as well as inwith a number of windows services and it looks very promising! :)&lt;br /&gt;&lt;br /&gt;Don</description><comments></comments><link>http://channel9.msdn.com/shows/Going+Deep/CCR-Programming-Jeffrey-Richter-and-George-Chrysanthakopoulos/?CommentID=295722</link><pubDate>Fri, 16 Mar 2007 14:26:57 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/shows/Going+Deep/CCR-Programming-Jeffrey-Richter-and-George-Chrysanthakopoulos/?CommentID=295722</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/295722/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>Thanks George - I appreciate the quick reply.. I'll post any further questions on the newsgroup. It would in fact be quite helpful to have a subsection specific to CCR. The application I'm doing a 'proof-of-concept' for is within the context of asycnhronous web services (asp.net/wse3.0), as well as&amp;#8230;</evnet:previewtext><dc:creator>DonSch</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/295722/Trackback.aspx</trackback:ping></item><item><title>Re: CCR Programming - Jeffrey Richter and George Chrysanthakopoulos</title><description>&lt;blockquote&gt;
				&lt;div&gt;DonSch wrote:&lt;/div&gt;
				&lt;div&gt;﻿George,&lt;br /&gt;&lt;br /&gt;I'm wondering if you could comment on the recommended use of ThreadCausalities in CCR (in my case non-DSS environment). I can see that Causalities will be transferred from the current thread to&amp;nbsp;the &amp;nbsp;post operation, and that they are conversely transferred from the ITask back to the executing thread, making the context available to delegates as called from Receivers, etc.&lt;br /&gt;&lt;br /&gt;The obvious use is to provide an ExceptionPort that can take care of any unhandled exceptions that might have been thrown during events, etc. I have not really seen too many examples, nor is is clear what the appropriate patterns of use really are.. &lt;br /&gt;&lt;br /&gt;Possible example: I'm inside an iterator doing a number of yield return operations, etc, to Choices, etc. and may want that iterator to have a way to handle any unhandled exceptions during those operations, so I add a CausalityContext within that iterator. &lt;br /&gt;&lt;br /&gt;Then perhaps one of the services that I do a yield return call to (it returning a Choice)&amp;nbsp;decides that it needs a 'nested' causality, so it creates one for it's exception handling (of unhandled exceptions in the dispatcher chain).. Once that service posts back thru&amp;nbsp;the Choice, it appears that the original Iterator has it's restored CausalityContext in place again.&lt;br /&gt;&lt;br /&gt;Any insight on the appropriate usage patterns would really be appreciated. Also the intent of the CoordinationPort?&lt;br /&gt;&lt;br /&gt;The CCR appears to be an extremely useful library for a vast number off cases and I really appreciate your time in filling in the gaps!&lt;br /&gt;&lt;br /&gt;tnx again!&lt;br /&gt;Don&lt;/div&gt;
		&lt;/blockquote&gt;
		&lt;br /&gt;
		&lt;br /&gt;Hi Don, we actually use causalities, for exactly the same reasons you guessed :) Its a generalization, across threads and processors, of the nested exception handling mechanism. Much more powerfull however since it can deal with joins (two different causalities coming together in a common handler). And no, they are not transactions ;)&lt;br /&gt;&lt;br /&gt;Causalities are used for every single operation in the DSS runtime, our services infrastructure. They make sure that when an exception is thrown, within any logically related descendant of a Post operation, that exception can be cleanly caught and dealt with in one place.&lt;br /&gt;&lt;br /&gt;The CoordinationPort allows anyone within a causality to post a message to the "owner" of the causlity, allowing you to implement all kinds of protocols (like N phase commit, etc)&lt;br /&gt;&lt;br /&gt;Please post any further questions in the robotics newsgroup since thats the one we acively monitor. Soon we will have a forum in MSDN where we can talk about CCR stuff exclusively (it will be under the Robotics family of forums).&lt;br /&gt;&lt;br /&gt;For examples, i have posted something in the past in our robotics newsgroup on this (search for Causalities, Causality)&lt;br /&gt;&lt;br /&gt;btw we always want to know how the CCR is used and applied, especially in large scale commercial applications. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;</description><comments></comments><link>http://channel9.msdn.com/shows/Going+Deep/CCR-Programming-Jeffrey-Richter-and-George-Chrysanthakopoulos/?CommentID=295606</link><pubDate>Fri, 16 Mar 2007 01:41:52 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/shows/Going+Deep/CCR-Programming-Jeffrey-Richter-and-George-Chrysanthakopoulos/?CommentID=295606</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/295606/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>	DonSch wrote:
				﻿George,I'm wondering if you could comment on the recommended use of ThreadCausalities in CCR (in my case non-DSS environment). I can see that Causalities will be transferred from the current thread to&amp;nbsp;the &amp;nbsp;post operation, and that they are conversely transferred from&amp;#8230;</evnet:previewtext><dc:creator>georgioc</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/295606/Trackback.aspx</trackback:ping></item><item><title>Re: CCR Programming - Jeffrey Richter and George Chrysanthakopoulos</title><description>George,&lt;br /&gt;&lt;br /&gt;I'm wondering if you could comment on the recommended use of ThreadCausalities in CCR (in my case non-DSS environment). I can see that Causalities will be transferred from the current thread to&amp;nbsp;the &amp;nbsp;post operation, and that they are conversely transferred from the ITask back to the executing thread, making the context available to delegates as called from Receivers, etc.&lt;br /&gt;&lt;br /&gt;The obvious use is to provide an ExceptionPort that can take care of any unhandled exceptions that might have been thrown during events, etc. I have not really seen too many examples, nor is is clear what the appropriate patterns of use really are.. &lt;br /&gt;&lt;br /&gt;Possible example: I'm inside an iterator doing a number of yield return operations, etc, to Choices, etc. and may want that iterator to have a way to handle any unhandled exceptions during those operations, so I add a CausalityContext within that iterator. &lt;br /&gt;&lt;br /&gt;Then perhaps one of the services that I do a yield return call to (it returning a Choice)&amp;nbsp;decides that it needs a 'nested' causality, so it creates one for it's exception handling (of unhandled exceptions in the dispatcher chain).. Once that service posts back thru&amp;nbsp;the Choice, it appears that the original Iterator has it's restored CausalityContext in place again.&lt;br /&gt;&lt;br /&gt;Any insight on the appropriate usage patterns would really be appreciated. Also the intent of the CoordinationPort?&lt;br /&gt;&lt;br /&gt;The CCR appears to be an extremely useful library for a vast number off cases and I really appreciate your time in filling in the gaps!&lt;br /&gt;&lt;br /&gt;tnx again!&lt;br /&gt;Don</description><comments></comments><link>http://channel9.msdn.com/shows/Going+Deep/CCR-Programming-Jeffrey-Richter-and-George-Chrysanthakopoulos/?CommentID=295598</link><pubDate>Fri, 16 Mar 2007 00:10:11 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/shows/Going+Deep/CCR-Programming-Jeffrey-Richter-and-George-Chrysanthakopoulos/?CommentID=295598</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/295598/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>George,I'm wondering if you could comment on the recommended use of ThreadCausalities in CCR (in my case non-DSS environment). I can see that Causalities will be transferred from the current thread to&amp;nbsp;the &amp;nbsp;post operation, and that they are conversely transferred from the ITask back to the&amp;#8230;</evnet:previewtext><dc:creator>DonSch</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/295598/Trackback.aspx</trackback:ping></item><item><title>Re: CCR Programming - Jeffrey Richter and George Chrysanthakopoulos</title><description>&lt;p&gt;Hi, &lt;br /&gt;&lt;br /&gt;How does CCR compare to DataRush&amp;nbsp;from Pervasive in Java land (&lt;a href="http://www.pervasivedatarush.com/technology"&gt;http://www.pervasivedatarush.com/technology&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Are these two in similar concept?&lt;br /&gt;&lt;br /&gt;Thanks. &lt;br /&gt;Raghu/..&lt;br /&gt;&lt;/p&gt;</description><comments></comments><link>http://channel9.msdn.com/shows/Going+Deep/CCR-Programming-Jeffrey-Richter-and-George-Chrysanthakopoulos/?CommentID=274850</link><pubDate>Tue, 26 Dec 2006 20:11:55 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/shows/Going+Deep/CCR-Programming-Jeffrey-Richter-and-George-Chrysanthakopoulos/?CommentID=274850</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/274850/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>Hi, How does CCR compare to DataRush&amp;nbsp;from Pervasive in Java land (http://www.pervasivedatarush.com/technology).Are these two in similar concept?Thanks. Raghu/..</evnet:previewtext><dc:creator>raghur</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/274850/Trackback.aspx</trackback:ping></item><item><title>Re: CCR Programming - Jeffrey Richter and George Chrysanthakopoulos</title><description>Microsoft Robotics Studio version 1.0 and with it&amp;nbsp;the CCR library have released!&lt;br /&gt;&lt;br /&gt;Please visit &lt;a href="http://www.microsoft.com/robotics"&gt;www.microsoft.com/robotics&lt;/a&gt; for the latest bits.&lt;br /&gt;&lt;br /&gt;Note on the licensing: CCR, which is part of the MSRS runtime is covered by the same license as the robotics runtime. For non-commercial use (please read the license for more details) its use is free. For commercial use however there is a fee (good news is that with one MSRS license you get permission for multiple runtime instances)&lt;br /&gt;&lt;br /&gt;For any questions please refer to the license and also feel free to post to the newsgroups.&lt;br /&gt;&lt;br /&gt;thanks&amp;nbsp;to all for all the great&amp;nbsp;feedback</description><comments></comments><link>http://channel9.msdn.com/shows/Going+Deep/CCR-Programming-Jeffrey-Richter-and-George-Chrysanthakopoulos/?CommentID=272405</link><pubDate>Wed, 13 Dec 2006 15:00:06 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/shows/Going+Deep/CCR-Programming-Jeffrey-Richter-and-George-Chrysanthakopoulos/?CommentID=272405</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/272405/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>Microsoft Robotics Studio version 1.0 and with it&amp;nbsp;the CCR library have released!Please visit www.microsoft.com/robotics for the latest bits.Note on the licensing: CCR, which is part of the MSRS runtime is covered by the same license as the robotics runtime. For non-commercial use (please read&amp;#8230;</evnet:previewtext><dc:creator>georgioc</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/272405/Trackback.aspx</trackback:ping></item><item><title>Re: CCR Programming - Jeffrey Richter and George Chrysanthakopoulos</title><description>&lt;blockquote&gt;
				&lt;div&gt;dtspence wrote:&lt;/div&gt;
				&lt;div&gt;﻿George,&lt;br /&gt;&lt;br /&gt;Thanks for the reply.&amp;nbsp; Your suggestion worked great.&amp;nbsp; I have another related question.&lt;br /&gt;&lt;br /&gt;Could you explain what the runtime does with the return type of IEnumerator&amp;lt;ITask&amp;gt; a little?&amp;nbsp; The runtime seemed to execute the first task, but not the others.&lt;br /&gt;&lt;br /&gt;Thanks.&lt;br /&gt;
&lt;blockquote&gt;.....&lt;/blockquote&gt;&lt;/div&gt;
		&lt;/blockquote&gt;
		&lt;br /&gt;
		&lt;br /&gt;The C# compliler re-writes all functions that return IENumerator to look like a heap allocated class that implements a state machine. Every time you yield, the state machine is updated, and the CCR uses that to do MoveNext when the constraint (for a example a receive occuring) is satisfied. Basically the CCR figured out how to use iterator for async scheduling.&lt;br /&gt;Now, for all this to happen, you must implement the proper Task which can support linked iterators. This is what choice, Receive, Join etc have to do. Its not enough to just derive from task, since you cant yield to a simple task: Its not clear when a task is "done". To do this, you will need to support the LinkedIterator property plus some other fields.&lt;br /&gt;&lt;br /&gt;Its a bit of an advanced subject that i think should be covered by a new article or even book on the ccr :)&lt;br /&gt;</description><comments></comments><link>http://channel9.msdn.com/shows/Going+Deep/CCR-Programming-Jeffrey-Richter-and-George-Chrysanthakopoulos/?CommentID=270125</link><pubDate>Mon, 04 Dec 2006 16:05:47 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/shows/Going+Deep/CCR-Programming-Jeffrey-Richter-and-George-Chrysanthakopoulos/?CommentID=270125</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/270125/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>	dtspence wrote:
				﻿George,Thanks for the reply.&amp;nbsp; Your suggestion worked great.&amp;nbsp; I have another related question.Could you explain what the runtime does with the return type of IEnumerator&amp;lt;ITask&amp;gt; a little?&amp;nbsp; The runtime seemed to execute the first task, but not the&amp;#8230;</evnet:previewtext><dc:creator>georgioc</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/270125/Trackback.aspx</trackback:ping></item><item><title>Re: CCR Programming - Jeffrey Richter and George Chrysanthakopoulos</title><description>George,&lt;br /&gt;&lt;br /&gt;Thanks for the reply.&amp;nbsp; Your suggestion worked great.&amp;nbsp; I have another related question.&lt;br /&gt;&lt;br /&gt;Could you explain what the runtime does with the return type of IEnumerator&amp;lt;ITask&amp;gt; a little?&amp;nbsp; The runtime seemed to execute the first task, but not the others.&lt;br /&gt;&lt;br /&gt;Thanks.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;div&gt;georgioc wrote:&lt;/div&gt;&lt;div&gt;﻿
&lt;blockquote&gt;
&lt;table&gt;

&lt;tr&gt;
&lt;td&gt;&lt;img src="http://channel9.msdn.com/Themes/AlmostGlass/images/icon-quote.gif /&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;dtspence wrote:&lt;/strong&gt;

&lt;i&gt;﻿ 
&lt;p&gt;George,&lt;br /&gt;&lt;br /&gt;I am trying to create an alternate receiver that would send a message to all predicates and applicable handlers, versus stopping on a single Predicate match.&lt;br /&gt;&lt;br /&gt;There is a problem with my implementation not&amp;nbsp;getting a second pass through the EvaluatorAggregateTask's Execute method after the first yield return.&amp;nbsp; I also tried to return an alternate IEnumerator&amp;lt;&amp;gt; from a List&amp;lt;&amp;gt; and received the same behavior.&lt;br /&gt;&lt;br /&gt;I was able to get all the EvaluatorTask&amp;lt;&amp;gt; enqueued by&amp;nbsp;calling the DispatchQueue.Enqueue, not sure if this is correct.&amp;nbsp; Do you know if the framework should be executing all of the tasks returned back in the enumerator?&amp;nbsp; Also please mention anything I look at doing differently.&lt;br /&gt;&lt;br /&gt;Thanks.&lt;br /&gt;&lt;br /&gt;Code snippets as follows:&lt;br /&gt;&lt;br /&gt;public class TestReceiver&amp;lt;T&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; : Receiver&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public TestReceiver(bool persist, IPortReceive port,&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;params Tuple&amp;lt;Predicate&amp;lt;T&amp;gt;, Handler&amp;lt;T&amp;gt;&amp;gt;[] tuples)&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : base(true, port, new EvaluatorAggregateTask&amp;lt;T&amp;gt;(tuples))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// no code&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;internal class EvaluatorAggregateTask&amp;lt;V&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : ITask&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public IEnumerator&amp;lt;ITask&amp;gt; Execute()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach (Tuple&amp;lt;Predicate&amp;lt;V&amp;gt;, Handler&amp;lt;V&amp;gt;&amp;gt; tuple in this.tuples)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Predicate&amp;lt;V&amp;gt; predicate = (Predicate&amp;lt;V&amp;gt;)tuple.Item0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Handler&amp;lt;V&amp;gt; handler = (Handler&amp;lt;V&amp;gt;)tuple.Item1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; yield return new EvaluatorTask&amp;lt;V&amp;gt;((PortElement&amp;lt;V&amp;gt;)this[0],&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; handler, predicate);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;[Rest of ITask implementation&amp;nbsp;here ... ]&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;internal class EvaluatorTask&amp;lt;V&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : ITask&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public IEnumerator&amp;lt;ITask&amp;gt; Execute()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (this.predicate(this.param.TypedItem) == true)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.handler(this.param.TypedItem);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return null;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[Rest of ITask implementation&amp;nbsp;here ... ]&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;/i&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Hi Tasks never get their execute method called more than once. Persistent receivers even, will clone the task that runs the handler, and call it once for each message.&lt;br /&gt;&lt;br /&gt;To achieve what you want, there is a different approach. Create the alternate receiver, just like you did. In the receiver's Evaluate method (override it) take the IPortElement.Value contents, and essentially broad cast to any other port or handlers you want. Make sure you return true from the Evaluate, so the port does not keep the message in its queue&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/blockquote&gt;</description><comments></comments><link>http://channel9.msdn.com/shows/Going+Deep/CCR-Programming-Jeffrey-Richter-and-George-Chrysanthakopoulos/?CommentID=270090</link><pubDate>Mon, 04 Dec 2006 13:54:06 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/shows/Going+Deep/CCR-Programming-Jeffrey-Richter-and-George-Chrysanthakopoulos/?CommentID=270090</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/270090/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>George,Thanks for the reply.&amp;nbsp; Your suggestion worked great.&amp;nbsp; I have another related question.Could you explain what the runtime does with the return type of IEnumerator&amp;lt;ITask&amp;gt; a little?&amp;nbsp; The runtime seemed to execute the first task, but not the others.Thanks.georgioc&amp;#8230;</evnet:previewtext><dc:creator>dtspence</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/270090/Trackback.aspx</trackback:ping></item><item><title>Re: CCR Programming - Jeffrey Richter and George Chrysanthakopoulos</title><description>Thank you,&lt;br /&gt;&lt;br /&gt;Kroki</description><comments></comments><link>http://channel9.msdn.com/shows/Going+Deep/CCR-Programming-Jeffrey-Richter-and-George-Chrysanthakopoulos/?CommentID=269184</link><pubDate>Thu, 30 Nov 2006 23:45:34 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/shows/Going+Deep/CCR-Programming-Jeffrey-Richter-and-George-Chrysanthakopoulos/?CommentID=269184</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/269184/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>Thank you,Kroki</evnet:previewtext><dc:creator>kroki</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/269184/Trackback.aspx</trackback:ping></item><item><title>Re: CCR Programming - Jeffrey Richter and George Chrysanthakopoulos</title><description>&lt;blockquote&gt;
				&lt;div&gt;kroki wrote:&lt;/div&gt;
				&lt;div&gt;﻿George,&lt;br /&gt;&lt;br /&gt;Can you refer me to a library with similar functionality as the CCR, though for unmanaged C++? &lt;br /&gt;&lt;br /&gt;Thanks in advance,&lt;br /&gt;&lt;br /&gt;Kroki&lt;/div&gt;
		&lt;/blockquote&gt;
		&lt;br /&gt;
		&lt;br /&gt;Hi i am not aware of any such library. A CCR C++ version would be nice but its not in our plans at this point.</description><comments></comments><link>http://channel9.msdn.com/shows/Going+Deep/CCR-Programming-Jeffrey-Richter-and-George-Chrysanthakopoulos/?CommentID=269174</link><pubDate>Thu, 30 Nov 2006 22:44:21 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/shows/Going+Deep/CCR-Programming-Jeffrey-Richter-and-George-Chrysanthakopoulos/?CommentID=269174</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/269174/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>	kroki wrote:
				﻿George,Can you refer me to a library with similar functionality as the CCR, though for unmanaged C++? Thanks in advance,Kroki
		
		
		Hi i am not aware of any such library. A CCR C++ version would be nice but its not in our plans at this point.</evnet:previewtext><dc:creator>georgioc</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/269174/Trackback.aspx</trackback:ping></item><item><title>Re: CCR Programming - Jeffrey Richter and George Chrysanthakopoulos</title><description>&lt;blockquote&gt;
				&lt;div&gt;dtspence wrote:&lt;/div&gt;
				&lt;div&gt;﻿
&lt;p&gt;George,&lt;br /&gt;&lt;br /&gt;I am trying to create an alternate receiver that would send a message to all predicates and applicable handlers, versus stopping on a single Predicate match.&lt;br /&gt;&lt;br /&gt;There is a problem with my implementation not&amp;nbsp;getting a second pass through the EvaluatorAggregateTask's Execute method after the first yield return.&amp;nbsp; I also tried to return an alternate IEnumerator&amp;lt;&amp;gt; from a List&amp;lt;&amp;gt; and received the same behavior.&lt;br /&gt;&lt;br /&gt;I was able to get all the EvaluatorTask&amp;lt;&amp;gt; enqueued by&amp;nbsp;calling the DispatchQueue.Enqueue, not sure if this is correct.&amp;nbsp; Do you know if the framework should be executing all of the tasks returned back in the enumerator?&amp;nbsp; Also please mention anything I look at doing differently.&lt;br /&gt;&lt;br /&gt;Thanks.&lt;br /&gt;&lt;br /&gt;Code snippets as follows:&lt;br /&gt;&lt;br /&gt;public class TestReceiver&amp;lt;T&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; : Receiver&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public TestReceiver(bool persist, IPortReceive port,&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;params Tuple&amp;lt;Predicate&amp;lt;T&amp;gt;, Handler&amp;lt;T&amp;gt;&amp;gt;[] tuples)&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : base(true, port, new EvaluatorAggregateTask&amp;lt;T&amp;gt;(tuples))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// no code&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;internal class EvaluatorAggregateTask&amp;lt;V&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : ITask&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public IEnumerator&amp;lt;ITask&amp;gt; Execute()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach (Tuple&amp;lt;Predicate&amp;lt;V&amp;gt;, Handler&amp;lt;V&amp;gt;&amp;gt; tuple in this.tuples)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Predicate&amp;lt;V&amp;gt; predicate = (Predicate&amp;lt;V&amp;gt;)tuple.Item0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Handler&amp;lt;V&amp;gt; handler = (Handler&amp;lt;V&amp;gt;)tuple.Item1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; yield return new EvaluatorTask&amp;lt;V&amp;gt;((PortElement&amp;lt;V&amp;gt;)this[0],&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; handler, predicate);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;[Rest of ITask implementation&amp;nbsp;here ... ]&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;internal class EvaluatorTask&amp;lt;V&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : ITask&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public IEnumerator&amp;lt;ITask&amp;gt; Execute()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (this.predicate(this.param.TypedItem) == true)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.handler(this.param.TypedItem);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return null;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[Rest of ITask implementation&amp;nbsp;here ... ]&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;
		&lt;/blockquote&gt;
		&lt;br /&gt;
		&lt;br /&gt;Hi Tasks never get their execute method called more than once. Persistent receivers even, will clone the task that runs the handler, and call it once for each message.&lt;br /&gt;&lt;br /&gt;To achieve what you want, there is a different approach. Create the alternate receiver, just like you did. In the receiver's Evaluate method (override it) take the IPortElement.Value contents, and essentially broad cast to any other port or handlers you want. Make sure you return true from the Evaluate, so the port does not keep the message in its queue&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;</description><comments></comments><link>http://channel9.msdn.com/shows/Going+Deep/CCR-Programming-Jeffrey-Richter-and-George-Chrysanthakopoulos/?CommentID=269173</link><pubDate>Thu, 30 Nov 2006 22:43:41 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/shows/Going+Deep/CCR-Programming-Jeffrey-Richter-and-George-Chrysanthakopoulos/?CommentID=269173</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/269173/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>	dtspence wrote:
				﻿
George,I am trying to create an alternate receiver that would send a message to all predicates and applicable handlers, versus stopping on a single Predicate match.There is a problem with my implementation not&amp;nbsp;getting a second pass through the EvaluatorAggregateTask's&amp;#8230;</evnet:previewtext><dc:creator>georgioc</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/269173/Trackback.aspx</trackback:ping></item><item><title>Re: CCR Programming - Jeffrey Richter and George Chrysanthakopoulos</title><description>George,&lt;br /&gt;&lt;br /&gt;Can you refer me to a library with similar functionality as the CCR, though for unmanaged C++? &lt;br /&gt;&lt;br /&gt;Thanks in advance,&lt;br /&gt;&lt;br /&gt;Kroki</description><comments></comments><link>http://channel9.msdn.com/shows/Going+Deep/CCR-Programming-Jeffrey-Richter-and-George-Chrysanthakopoulos/?CommentID=269060</link><pubDate>Thu, 30 Nov 2006 15:34:09 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/shows/Going+Deep/CCR-Programming-Jeffrey-Richter-and-George-Chrysanthakopoulos/?CommentID=269060</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/269060/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>George,Can you refer me to a library with similar functionality as the CCR, though for unmanaged C++? Thanks in advance,Kroki</evnet:previewtext><dc:creator>kroki</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/269060/Trackback.aspx</trackback:ping></item><item><title>Re: CCR Programming - Jeffrey Richter and George Chrysanthakopoulos</title><description>&lt;p&gt;George,&lt;br /&gt;&lt;br /&gt;I am trying to create an alternate receiver that would send a message to all predicates and applicable handlers, versus stopping on a single Predicate match.&lt;br /&gt;&lt;br /&gt;There is a problem with my implementation not&amp;nbsp;getting a second pass through the EvaluatorAggregateTask's Execute method after the first yield return.&amp;nbsp; I also tried to return an alternate IEnumerator&amp;lt;&amp;gt; from a List&amp;lt;&amp;gt; and received the same behavior.&lt;br /&gt;&lt;br /&gt;I was able to get all the EvaluatorTask&amp;lt;&amp;gt; enqueued by&amp;nbsp;calling the DispatchQueue.Enqueue, not sure if this is correct.&amp;nbsp; Do you know if the framework should be executing all of the tasks returned back in the enumerator?&amp;nbsp; Also please mention anything I look at doing differently.&lt;br /&gt;&lt;br /&gt;Thanks.&lt;br /&gt;&lt;br /&gt;Code snippets as follows:&lt;br /&gt;&lt;br /&gt;public class TestReceiver&amp;lt;T&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; : Receiver&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public TestReceiver(bool persist, IPortReceive port,&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;params Tuple&amp;lt;Predicate&amp;lt;T&amp;gt;, Handler&amp;lt;T&amp;gt;&amp;gt;[] tuples)&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : base(true, port, new EvaluatorAggregateTask&amp;lt;T&amp;gt;(tuples))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// no code&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;internal class EvaluatorAggregateTask&amp;lt;V&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : ITask&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public IEnumerator&amp;lt;ITask&amp;gt; Execute()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach (Tuple&amp;lt;Predicate&amp;lt;V&amp;gt;, Handler&amp;lt;V&amp;gt;&amp;gt; tuple in this.tuples)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Predicate&amp;lt;V&amp;gt; predicate = (Predicate&amp;lt;V&amp;gt;)tuple.Item0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Handler&amp;lt;V&amp;gt; handler = (Handler&amp;lt;V&amp;gt;)tuple.Item1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; yield return new EvaluatorTask&amp;lt;V&amp;gt;((PortElement&amp;lt;V&amp;gt;)this[0],&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; handler, predicate);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;[Rest of ITask implementation&amp;nbsp;here ... ]&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;internal class EvaluatorTask&amp;lt;V&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : ITask&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public IEnumerator&amp;lt;ITask&amp;gt; Execute()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (this.predicate(this.param.TypedItem) == true)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.handler(this.param.TypedItem);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return null;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[Rest of ITask implementation&amp;nbsp;here ... ]&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;</description><comments></comments><link>http://channel9.msdn.com/shows/Going+Deep/CCR-Programming-Jeffrey-Richter-and-George-Chrysanthakopoulos/?CommentID=269033</link><pubDate>Thu, 30 Nov 2006 13:41:59 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/shows/Going+Deep/CCR-Programming-Jeffrey-Richter-and-George-Chrysanthakopoulos/?CommentID=269033</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/269033/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>George,I am trying to create an alternate receiver that would send a message to all predicates and applicable handlers, versus stopping on a single Predicate match.There is a problem with my implementation not&amp;nbsp;getting a second pass through the EvaluatorAggregateTask's Execute method after the&amp;#8230;</evnet:previewtext><dc:creator>dtspence</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/269033/Trackback.aspx</trackback:ping></item><item><title>Re: CCR Programming - Jeffrey Richter and George Chrysanthakopoulos</title><description>An update on the FIFO issue and Interleave that was raised by staceyw in this forum. I have found and fixed the issue causing this and it turns out interleave should have worked FIFO for exclusive receivers all along.&lt;br /&gt;See more details here:&lt;br /&gt;&lt;a href="http://www.microsoft.com/communities/newsgroups/en-us/default.aspx?dg=microsoft.public.msroboticsstudio&amp;amp;mid=618d9b8a-7194-4185-8d89-e8fff887395b&amp;amp;sloc=en-us"&gt;http://www.microsoft.com/communities/newsgroups/en-us/default.aspx?dg=microsoft.public.msroboticsstudio&amp;amp;mid=618d9b8a-7194-4185-8d89-e8fff887395b&amp;amp;sloc=en-us&lt;/a&gt;</description><comments></comments><link>http://channel9.msdn.com/shows/Going+Deep/CCR-Programming-Jeffrey-Richter-and-George-Chrysanthakopoulos/?CommentID=264293</link><pubDate>Tue, 14 Nov 2006 03:13:04 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/shows/Going+Deep/CCR-Programming-Jeffrey-Richter-and-George-Chrysanthakopoulos/?CommentID=264293</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/264293/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>An update on the FIFO issue and Interleave that was raised by staceyw in this forum. I have found and fixed the issue causing this and it turns out interleave should have worked FIFO for exclusive receivers all along.See more details&amp;#8230;</evnet:previewtext><dc:creator>georgioc</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/264293/Trackback.aspx</trackback:ping></item><item><title>Re: Usage of UseBackgroundThreads</title><description>&lt;blockquote&gt;
				&lt;div&gt;enelson wrote:&lt;/div&gt;
				&lt;div&gt;﻿Hi George,&lt;br /&gt;&lt;br /&gt;Dan is a coworker of mine and posted this after I commented about that.&lt;br /&gt;&lt;br /&gt;We don't necessarily have a situation where we NEED the ability to have different settings, but we do have a situation where changing the value could affect code in different libraries, and I felt that was a Bad Thing (tm).&lt;br /&gt;&lt;br /&gt;Basically, CCR has caught on like wildfire around here, so we have multiple libraries in the same AppDomain using it simultaneously. I personally have a component based service where the service itself has a Dispatcher for message distribution and then one the components has its own for part of its message processing tasks.&lt;br /&gt;&lt;br /&gt;Since I happen to have written both the service and this component, it's not much of a concern. But other developers will be writing components for the service, and it feels programmatically rude to change that static value and have it affect their instantiations. It's not a huge deal to save the old value and change it back, but it is kind of ugly &lt;img src="http://channel9.msdn.com/emoticons/emotion-7.gifborder=" /&gt;&lt;br /&gt;&lt;br /&gt;Thanks for the wonderful library! This is a situation that could only arise from us loving it so much.&lt;br /&gt;&lt;/div&gt;
		&lt;/blockquote&gt;
		&lt;br /&gt;
		&lt;br /&gt;First of all i am glad you are loving it so much :) &lt;br /&gt;&lt;br /&gt;Yes, indeed it does feel wierd to have a static for this. However remember that the background thread setting only makes sense if its global: If its not, its effect on application shutdown is eliminated. Even one dispatcher&amp;nbsp;with foreground threads would keep the app from exiting. &lt;br /&gt;&lt;br /&gt;May I ask why is the value being touched? Is it to control application exit behavior or to simply request background threads for the benefits they provide (better cpu sharing with other apps etc)&lt;br /&gt;</description><comments></comments><link>http://channel9.msdn.com/shows/Going+Deep/CCR-Programming-Jeffrey-Richter-and-George-Chrysanthakopoulos/?CommentID=263982</link><pubDate>Mon, 13 Nov 2006 05:28:24 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/shows/Going+Deep/CCR-Programming-Jeffrey-Richter-and-George-Chrysanthakopoulos/?CommentID=263982</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/263982/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>	enelson wrote:
				﻿Hi George,Dan is a coworker of mine and posted this after I commented about that.We don't necessarily have a situation where we NEED the ability to have different settings, but we do have a situation where changing the value could affect code in different libraries, and I felt&amp;#8230;</evnet:previewtext><dc:creator>georgioc</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/263982/Trackback.aspx</trackback:ping></item><item><title>Re: Usage of UseBackgroundThreads</title><description>Hi George,&lt;br /&gt;&lt;br /&gt;Dan is a coworker of mine and posted this after I commented about that.&lt;br /&gt;&lt;br /&gt;We don't necessarily have a situation where we NEED the ability to have different settings, but we do have a situation where changing the value could affect code in different libraries, and I felt that was a Bad Thing (tm).&lt;br /&gt;&lt;br /&gt;Basically, CCR has caught on like wildfire around here, so we have multiple libraries in the same AppDomain using it simultaneously. I personally have a component based service where the service itself has a Dispatcher for message distribution and then one the components has its own for part of its message processing tasks.&lt;br /&gt;&lt;br /&gt;Since I happen to have written both the service and this component, it's not much of a concern. But other developers will be writing components for the service, and it feels programmatically rude to change that static value and have it affect their instantiations. It's not a huge deal to save the old value and change it back, but it is kind of ugly :s&lt;br /&gt;&lt;br /&gt;Thanks for the wonderful library! This is a situation that could only arise from us loving it so much.&lt;br /&gt;</description><comments></comments><link>http://channel9.msdn.com/shows/Going+Deep/CCR-Programming-Jeffrey-Richter-and-George-Chrysanthakopoulos/?CommentID=263328</link><pubDate>Fri, 10 Nov 2006 08:52:10 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/shows/Going+Deep/CCR-Programming-Jeffrey-Richter-and-George-Chrysanthakopoulos/?CommentID=263328</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/263328/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>Hi George,Dan is a coworker of mine and posted this after I commented about that.We don't necessarily have a situation where we NEED the ability to have different settings, but we do have a situation where changing the value could affect code in different libraries, and I felt that was a Bad Thing&amp;#8230;</evnet:previewtext><dc:creator>enelson</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/263328/Trackback.aspx</trackback:ping></item><item><title>Re: Usage of UseBackgroundThreads</title><description>&lt;blockquote&gt;
				&lt;div&gt;dfarino wrote:&lt;/div&gt;
				&lt;div&gt;﻿Hi George,&lt;br /&gt;&lt;br /&gt;I have a comment about the UseBackgroundThreads static property on Dispatcher.&lt;br /&gt;&lt;br /&gt;It looks like you can set this property and its value is used during the creation of a Dispatcher instance. It feels to me like it should be a contructor parameter instead of a static property.&lt;br /&gt;&lt;br /&gt;The reason I ask is that we have CCR code (running in the same AppDomain) that was written by several developers. It seems like having to do something like this introduces a race condition:&lt;br /&gt;&lt;br /&gt;bool old = Dispatcher.UseBackgroundThreads;&lt;br /&gt;Dispatcher.UseBackgroundThreads = true;&lt;br /&gt;Dispatcher d = new Dispatcher();&lt;br /&gt;Dispatcher.UseBackgroundThreads = old;&lt;br /&gt;&lt;br /&gt;Am I missing the reason for this design decision?&lt;br /&gt;&lt;br /&gt;Thanks,&lt;br /&gt;Dan&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;
		&lt;/blockquote&gt;
		&lt;br /&gt;
		&lt;br /&gt;
		&lt;br /&gt;I decided to make it a static since it needs to be applied to all dispatchers to have the desried effect on the app domain. If even one dispatcher is created with&amp;nbsp; a different setting, then app domain will not exit/exit as expected. Its not meant to be change dmultiple time.&lt;br /&gt;&lt;br /&gt;Now what this means is that it should probably be static single assignment, aka write once, read many. The other option is to let people manage tis, like you suggest and make it a constructor parameter.&lt;br /&gt;&lt;br /&gt;Can you describe your scenario where different dispatcher need different settings, within one appdomain?</description><comments></comments><link>http://channel9.msdn.com/shows/Going+Deep/CCR-Programming-Jeffrey-Richter-and-George-Chrysanthakopoulos/?CommentID=247033</link><pubDate>Thu, 02 Nov 2006 16:47:54 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/shows/Going+Deep/CCR-Programming-Jeffrey-Richter-and-George-Chrysanthakopoulos/?CommentID=247033</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/247033/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>	dfarino wrote:
				﻿Hi George,I have a comment about the UseBackgroundThreads static property on Dispatcher.It looks like you can set this property and its value is used during the creation of a Dispatcher instance. It feels to me like it should be a contructor parameter instead of a static&amp;#8230;</evnet:previewtext><dc:creator>georgioc</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/247033/Trackback.aspx</trackback:ping></item><item><title>Usage of UseBackgroundThreads</title><description>Hi George,&lt;br /&gt;&lt;br /&gt;I have a comment about the UseBackgroundThreads static property on Dispatcher.&lt;br /&gt;&lt;br /&gt;It looks like you can set this property and its value is used during the creation of a Dispatcher instance. It feels to me like it should be a contructor parameter instead of a static property.&lt;br /&gt;&lt;br /&gt;The reason I ask is that we have CCR code (running in the same AppDomain) that was written by several developers. It seems like having to do something like this introduces a race condition:&lt;br /&gt;&lt;br /&gt;bool old = Dispatcher.UseBackgroundThreads;&lt;br /&gt;Dispatcher.UseBackgroundThreads = true;&lt;br /&gt;Dispatcher d = new Dispatcher();&lt;br /&gt;Dispatcher.UseBackgroundThreads = old;&lt;br /&gt;&lt;br /&gt;Am I missing the reason for this design decision?&lt;br /&gt;&lt;br /&gt;Thanks,&lt;br /&gt;Dan&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;</description><comments></comments><link>http://channel9.msdn.com/shows/Going+Deep/CCR-Programming-Jeffrey-Richter-and-George-Chrysanthakopoulos/?CommentID=246739</link><pubDate>Wed, 01 Nov 2006 20:38:08 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/shows/Going+Deep/CCR-Programming-Jeffrey-Richter-and-George-Chrysanthakopoulos/?CommentID=246739</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/246739/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>Hi George,I have a comment about the UseBackgroundThreads static property on Dispatcher.It looks like you can set this property and its value is used during the creation of a Dispatcher instance. It feels to me like it should be a contructor parameter instead of a static property.The reason I ask is&amp;#8230;</evnet:previewtext><dc:creator>dfarino</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/246739/Trackback.aspx</trackback:ping></item><item><title>Re: CCR Programming - Jeffrey Richter and George Chrysanthakopoulos</title><description>&lt;blockquote&gt;
				&lt;div&gt;tartufella wrote:&lt;/div&gt;
				&lt;div&gt;﻿
&lt;p&gt;Hi George,&lt;/p&gt;
&lt;p&gt;My implementation of the CCR is going really well and it's great to see new versions coming out every month.&lt;/p&gt;
&lt;p&gt;I have an issue that is niggling at me though and it's to do with the ProcessedTaskCount of a Dispatcher.&amp;nbsp; I have a long running Windows Service that has 1 Dispatcher and multiple Dispatcher Queues.&amp;nbsp; The service is quite busy, so the ProcessedTaskCount goes up quite quickly.&amp;nbsp; Given that ProcessTaskCount is an Int32, it's not unreasonable that over some time I will hit the Int32.MaxValue and the ccr will then bring my AppDomain down.&amp;nbsp; Does this value recycle before it reaches Int32.MaxValue?&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Many thanks&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Marshall&lt;/p&gt;&lt;/div&gt;
		&lt;/blockquote&gt;
		&lt;br /&gt;
		&lt;br /&gt;
		&lt;br /&gt;Hi, we do handle the rolling over case, so the CCR will not affect the appdomain when this happens.&lt;br /&gt;</description><comments></comments><link>http://channel9.msdn.com/shows/Going+Deep/CCR-Programming-Jeffrey-Richter-and-George-Chrysanthakopoulos/?CommentID=244013</link><pubDate>Wed, 25 Oct 2006 15:39:04 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/shows/Going+Deep/CCR-Programming-Jeffrey-Richter-and-George-Chrysanthakopoulos/?CommentID=244013</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/244013/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>	tartufella wrote:
				﻿
Hi George,
My implementation of the CCR is going really well and it's great to see new versions coming out every month.
I have an issue that is niggling at me though and it's to do with the ProcessedTaskCount of a Dispatcher.&amp;nbsp; I have a long running Windows Service&amp;#8230;</evnet:previewtext><dc:creator>georgioc</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/244013/Trackback.aspx</trackback:ping></item><item><title>Re: CCR Programming - Jeffrey Richter and George Chrysanthakopoulos</title><description>&lt;blockquote&gt;
				&lt;div&gt;shmarya wrote:&lt;/div&gt;
				&lt;div&gt;﻿Hi George,&lt;br /&gt;&lt;br /&gt;I have a question:&lt;br /&gt;&lt;br /&gt;I am trying to build a method which may be either asynchronous or synchronous, using CCR internally (to the method) to accomplish the asynchronousicity...&lt;br /&gt;&lt;br /&gt;So basically I have a method which has two local ports, one for the input message and the other for the returned results.&lt;br /&gt;&lt;br /&gt;Everything is fine until I want to block on the receiver for the result port in order to acheive 'synchronous' operation.&lt;br /&gt;&lt;br /&gt;How can I make the Activate call block?&lt;br /&gt;&lt;br /&gt;Is there a better method for doing this?&lt;br /&gt;&lt;br /&gt;Thanks,&lt;br /&gt;Shmarya&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;
		&lt;/blockquote&gt;
		&lt;br /&gt;
		&lt;br /&gt;
		&lt;br /&gt;Make the parent method an Iterator, spawn it (either enqueue an IterativeTask with some arguments, or post a message to a port with an iterator receiver attached.&lt;br /&gt;&lt;br /&gt;In the iterator method, you can do yield return, which is the synchronous version of Activate().&lt;br /&gt;&lt;br /&gt;There lots of examples of CCR with iterators in the robotics tutorials and samples. The MSDN article also covers them.&lt;br /&gt;&lt;br /&gt;thanx&lt;br /&gt;g</description><comments></comments><link>http://channel9.msdn.com/shows/Going+Deep/CCR-Programming-Jeffrey-Richter-and-George-Chrysanthakopoulos/?CommentID=241838</link><pubDate>Fri, 20 Oct 2006 02:54:40 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/shows/Going+Deep/CCR-Programming-Jeffrey-Richter-and-George-Chrysanthakopoulos/?CommentID=241838</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/241838/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>	shmarya wrote:
				﻿Hi George,I have a question:I am trying to build a method which may be either asynchronous or synchronous, using CCR internally (to the method) to accomplish the asynchronousicity...So basically I have a method which has two local ports, one for the input message and the other&amp;#8230;</evnet:previewtext><dc:creator>georgioc</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/241838/Trackback.aspx</trackback:ping></item><item><title>Re: CCR Programming - Jeffrey Richter and George Chrysanthakopoulos</title><description>&lt;p&gt;Hi George,&lt;/p&gt;
&lt;p&gt;My implementation of the CCR is going really well and it's great to see new versions coming out every month.&lt;/p&gt;
&lt;p&gt;I have an issue that is niggling at me though and it's to do with the ProcessedTaskCount of a Dispatcher.&amp;nbsp; I have a long running Windows Service that has 1 Dispatcher and multiple Dispatcher Queues.&amp;nbsp; The service is quite busy, so the ProcessedTaskCount goes up quite quickly.&amp;nbsp; Given that ProcessTaskCount is an Int32, it's not unreasonable that over some time I will hit the Int32.MaxValue and the ccr will then bring my AppDomain down.&amp;nbsp; Does this value recycle before it reaches Int32.MaxValue?&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Many thanks&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Marshall&lt;/p&gt;</description><comments></comments><link>http://channel9.msdn.com/shows/Going+Deep/CCR-Programming-Jeffrey-Richter-and-George-Chrysanthakopoulos/?CommentID=240552</link><pubDate>Tue, 17 Oct 2006 10:47:53 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/shows/Going+Deep/CCR-Programming-Jeffrey-Richter-and-George-Chrysanthakopoulos/?CommentID=240552</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/240552/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>Hi George,
My implementation of the CCR is going really well and it's great to see new versions coming out every month.
I have an issue that is niggling at me though and it's to do with the ProcessedTaskCount of a Dispatcher.&amp;nbsp; I have a long running Windows Service that has 1 Dispatcher and&amp;#8230;</evnet:previewtext><dc:creator>tartufella</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/240552/Trackback.aspx</trackback:ping></item><item><title>Re: CCR Programming - Jeffrey Richter and George Chrysanthakopoulos</title><description>Hi George,&lt;br /&gt;&lt;br /&gt;I have a question:&lt;br /&gt;&lt;br /&gt;I am trying to build a method which may be either asynchronous or synchronous, using CCR internally (to the method) to accomplish the asynchronousicity...&lt;br /&gt;&lt;br /&gt;So basically I have a method which has two local ports, one for the input message and the other for the returned results.&lt;br /&gt;&lt;br /&gt;Everything is fine until I want to block on the receiver for the result port in order to acheive 'synchronous' operation.&lt;br /&gt;&lt;br /&gt;How can I make the Activate call block?&lt;br /&gt;&lt;br /&gt;Is there a better method for doing this?&lt;br /&gt;&lt;br /&gt;Thanks,&lt;br /&gt;Shmarya&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;</description><comments></comments><link>http://channel9.msdn.com/shows/Going+Deep/CCR-Programming-Jeffrey-Richter-and-George-Chrysanthakopoulos/?CommentID=240532</link><pubDate>Tue, 17 Oct 2006 09:23:40 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/shows/Going+Deep/CCR-Programming-Jeffrey-Richter-and-George-Chrysanthakopoulos/?CommentID=240532</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/240532/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>Hi George,I have a question:I am trying to build a method which may be either asynchronous or synchronous, using CCR internally (to the method) to accomplish the asynchronousicity...So basically I have a method which has two local ports, one for the input message and the other for the returned&amp;#8230;</evnet:previewtext><dc:creator>shmarya</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/240532/Trackback.aspx</trackback:ping></item><item><title>Re: CCR Programming - Jeffrey Richter and George Chrysanthakopoulos</title><description>Hi, CCR has some new features relating to throttling and rate based scheduling. They are available in the latest robotics CTP and explained briefly here (towards the bottom, where it talks about ccr/dss):&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/robotics/getstarted/ctp4/default.aspx"&gt;http://msdn.microsoft.com/robotics/getstarted/ctp4/default.aspx&lt;/a&gt;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;Basically the ccr dispatcher queue allows you to specify task execution based on constraints. This eliminates alot of manual throttling and increases determinism:&lt;br /&gt;&lt;br /&gt;
&lt;p&gt;/// &amp;lt;summary&amp;gt;&lt;/p&gt;
&lt;p&gt;/// Specifies dispatcher queue task scheduling behavior&lt;/p&gt;
&lt;p&gt;/// &amp;lt;/summary&amp;gt;&lt;/p&gt;
&lt;p&gt;public enum TaskExecutionPolicy&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;/// &amp;lt;summary&amp;gt;&lt;/p&gt;
&lt;p&gt;/// Default behavior, all tasks are queued with no constraints&lt;/p&gt;
&lt;p&gt;/// &amp;lt;/summary&amp;gt;&lt;/p&gt;
&lt;p&gt;Unconstrained = 0,&lt;/p&gt;
&lt;p&gt;/// &amp;lt;summary&amp;gt;&lt;/p&gt;
&lt;p&gt;/// Queue enforces maximum depth (specified at queue creation) &lt;/p&gt;
&lt;p&gt;/// and discards tasks enqueued after the limit is reached&lt;/p&gt;
&lt;p&gt;/// &amp;lt;/summary&amp;gt;&lt;/p&gt;
&lt;p&gt;ConstrainQueueDepthDiscardTasks,&lt;/p&gt;
&lt;p&gt;/// &amp;lt;summary&amp;gt;&lt;/p&gt;
&lt;p&gt;/// Queue enforces maximum depth (specified at queue creation)&lt;/p&gt;
&lt;p&gt;/// but does not discard anny tasks. It forces the thread posting any tasks after the limit is reached, to&lt;/p&gt;
&lt;p&gt;/// sleep until the queue depth falls below the limit&lt;/p&gt;
&lt;p&gt;/// &amp;lt;/summary&amp;gt;&lt;/p&gt;
&lt;p&gt;ConstrainQueueDepthThrottleExecution,&lt;/p&gt;
&lt;p&gt;/// &amp;lt;summary&amp;gt;&lt;/p&gt;
&lt;p&gt;/// Queue enforces the rate of task scheduling specified at queue creation&lt;/p&gt;
&lt;p&gt;/// and discards tasks enqueued after the current scheduling rate is above the specified rate&lt;/p&gt;
&lt;p&gt;/// &amp;lt;/summary&amp;gt;&lt;/p&gt;
&lt;p&gt;ConstrainSchedulingRateDiscardTasks,&lt;/p&gt;
&lt;p&gt;/// &amp;lt;summary&amp;gt;&lt;/p&gt;
&lt;p&gt;/// Queue enforces the rate of task scheduling specified at queue creation&lt;/p&gt;
&lt;p&gt;/// and forces the thread posting tasks to sleep until the current rate of task scheduling falls below&lt;/p&gt;
&lt;p&gt;/// the specified average rate&lt;/p&gt;
&lt;p&gt;/// &amp;lt;/summary&amp;gt;&lt;/p&gt;
&lt;p&gt;ConstrainSchedulingRateThrottleExecution&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;</description><comments></comments><link>http://channel9.msdn.com/shows/Going+Deep/CCR-Programming-Jeffrey-Richter-and-George-Chrysanthakopoulos/?CommentID=238650</link><pubDate>Wed, 11 Oct 2006 16:33:44 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/shows/Going+Deep/CCR-Programming-Jeffrey-Richter-and-George-Chrysanthakopoulos/?CommentID=238650</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/238650/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>Hi, CCR has some new features relating to throttling and rate based scheduling. They are available in the latest robotics CTP and explained briefly here (towards the bottom, where it talks about ccr/dss):http://msdn.microsoft.com/robotics/getstarted/ctp4/default.aspx&amp;nbsp;Basically the ccr&amp;#8230;</evnet:previewtext><dc:creator>georgioc</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/238650/Trackback.aspx</trackback:ping></item><item><title>Re: CCR Programming - Jeffrey Richter and George Chrysanthakopoulos</title><description>&lt;blockquote&gt;
				&lt;div&gt;oddurmagnusson wrote:&lt;/div&gt;
				&lt;div&gt;﻿This stuff is really intresting. Would it be possible to use this to implement something similiar to &lt;a href="http://www.stackless.com/"&gt;stackless python&lt;/a&gt;( ironpython + ccr = stackless python in clr, now that would just make my day )&lt;br /&gt;&lt;/div&gt;
		&lt;/blockquote&gt;
		&lt;br /&gt;
		&lt;br /&gt;we have CCR + python running, so yes :)&lt;br /&gt;See the python examples in the robotics tutorials (ccr ships as an independent, reusable&amp;nbsp;part of the robotics CTP)</description><comments></comments><link>http://channel9.msdn.com/shows/Going+Deep/CCR-Programming-Jeffrey-Richter-and-George-Chrysanthakopoulos/?CommentID=237155</link><pubDate>Sat, 07 Oct 2006 02:47:17 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/shows/Going+Deep/CCR-Programming-Jeffrey-Richter-and-George-Chrysanthakopoulos/?CommentID=237155</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/237155/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>	oddurmagnusson wrote:
				﻿This stuff is really intresting. Would it be possible to use this to implement something similiar to stackless python( ironpython + ccr = stackless python in clr, now that would just make my day )
		
		
		we have CCR + python running, so yes :)See the python examples&amp;#8230;</evnet:previewtext><dc:creator>georgioc</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/237155/Trackback.aspx</trackback:ping></item><item><title>Re: CCR Programming - Jeffrey Richter and George Chrysanthakopoulos</title><description>This stuff is really intresting. Would it be possible to use this to implement something similiar to &lt;a href="http://www.stackless.com/"&gt;stackless python&lt;/a&gt;( ironpython + ccr = stackless python in clr, now that would just make my day )&lt;br /&gt;</description><comments></comments><link>http://channel9.msdn.com/shows/Going+Deep/CCR-Programming-Jeffrey-Richter-and-George-Chrysanthakopoulos/?CommentID=236987</link><pubDate>Fri, 06 Oct 2006 18:55:57 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/shows/Going+Deep/CCR-Programming-Jeffrey-Richter-and-George-Chrysanthakopoulos/?CommentID=236987</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/236987/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>This stuff is really intresting. Would it be possible to use this to implement something similiar to stackless python( ironpython + ccr = stackless python in clr, now that would just make my day )</evnet:previewtext><dc:creator>oddurmagnusson</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/236987/Trackback.aspx</trackback:ping></item></channel></rss>