<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="/rss.xsl"?><rss version="2.0"><channel><title>Rx Issue Tracker Rss Feed</title><link>https://rx.codeplex.com/workitem/list/basic</link><description>Rx Issue Tracker Rss Description</description><item><title>Closed Unassigned: MfcTimeFliesLikeAnArrow crashes in rx-a82ffb9a7f4cdfe27c1530a2c5635c2b751ad630.zip [39]</title><link>http://rx.codeplex.com/workitem/39</link><description>Stack trace &amp;#40;always in __crtCloseThreadpoolTimer, right away or some time after running the app, VS2012 11.0.60315.01 Update 2 on Windows 8 Enterprise&amp;#41;&amp;#58;&lt;br /&gt;&lt;br /&gt; &amp;#9;ntdll.dll&amp;#33;77940dd9&amp;#40;&amp;#41;&amp;#9;Unknown&lt;br /&gt; &amp;#9;&amp;#91;Frames below may be incorrect and&amp;#47;or missing, no symbols loaded for ntdll.dll&amp;#93;&amp;#9;&lt;br /&gt; &amp;#9;ntdll.dll&amp;#33;77910e81&amp;#40;&amp;#41;&amp;#9;Unknown&lt;br /&gt; &amp;#9;ntdll.dll&amp;#33;778a75d2&amp;#40;&amp;#41;&amp;#9;Unknown&lt;br /&gt;&amp;#62;&amp;#9;MfcTimeFliesLikeAnArrow.exe&amp;#33;__crtCloseThreadpoolTimer&amp;#40;_TP_TIMER &amp;#42; pti&amp;#41; Line 556&amp;#9;C&lt;br /&gt; &amp;#9;MfcTimeFliesLikeAnArrow.exe&amp;#33;Concurrency&amp;#58;&amp;#58;details&amp;#58;&amp;#58;DeleteAsyncTimerAndUnloadLibrary&amp;#40;_TP_TIMER &amp;#42; timer&amp;#41; Line 696&amp;#9;C&amp;#43;&amp;#43;&lt;br /&gt; &amp;#9;MfcTimeFliesLikeAnArrow.exe&amp;#33;Concurrency&amp;#58;&amp;#58;details&amp;#58;&amp;#58;TimedSingleWaitBlock&amp;#58;&amp;#58;destroyTimer&amp;#40;bool waitForOutstandingCallback&amp;#41; Line 454&amp;#9;C&amp;#43;&amp;#43;&lt;br /&gt; &amp;#9;MfcTimeFliesLikeAnArrow.exe&amp;#33;Concurrency&amp;#58;&amp;#58;details&amp;#58;&amp;#58;TimedSingleWaitBlock&amp;#58;&amp;#58;Satisfy&amp;#40;Concurrency&amp;#58;&amp;#58;Context &amp;#42; &amp;#42; pContextOut, Concurrency&amp;#58;&amp;#58;details&amp;#58;&amp;#58;EventWaitNode &amp;#42; pNode&amp;#41; Line 484&amp;#9;C&amp;#43;&amp;#43;&lt;br /&gt; &amp;#9;MfcTimeFliesLikeAnArrow.exe&amp;#33;Concurrency&amp;#58;&amp;#58;details&amp;#58;&amp;#58;EventWaitNode&amp;#58;&amp;#58;Satisfy&amp;#40;Concurrency&amp;#58;&amp;#58;Context &amp;#42; &amp;#42; pContextOut&amp;#41; Line 330&amp;#9;C&amp;#43;&amp;#43;&lt;br /&gt; &amp;#9;MfcTimeFliesLikeAnArrow.exe&amp;#33;Concurrency&amp;#58;&amp;#58;details&amp;#58;&amp;#58;_Condition_variable&amp;#58;&amp;#58;notify_one&amp;#40;&amp;#41; Line 645&amp;#9;C&amp;#43;&amp;#43;&lt;br /&gt; &amp;#9;MfcTimeFliesLikeAnArrow.exe&amp;#33;do_signal&amp;#40;_Cnd_internal_imp_t &amp;#42; &amp;#42; cond, int all&amp;#41; Line 68&amp;#9;C&amp;#43;&amp;#43;&lt;br /&gt; &amp;#9;MfcTimeFliesLikeAnArrow.exe&amp;#33;_Cnd_signal&amp;#40;_Cnd_internal_imp_t &amp;#42; &amp;#42; cond&amp;#41; Line 83&amp;#9;C&amp;#43;&amp;#43;&lt;br /&gt; &amp;#9;MfcTimeFliesLikeAnArrow.exe&amp;#33;std&amp;#58;&amp;#58;_Cnd_signalX&amp;#40;_Cnd_internal_imp_t &amp;#42; &amp;#42; _Cnd&amp;#41; Line 108&amp;#9;C&amp;#43;&amp;#43;&lt;br /&gt; &amp;#9;MfcTimeFliesLikeAnArrow.exe&amp;#33;std&amp;#58;&amp;#58;condition_variable&amp;#58;&amp;#58;notify_one&amp;#40;&amp;#41; Line 50&amp;#9;C&amp;#43;&amp;#43;&lt;br /&gt; &amp;#9;MfcTimeFliesLikeAnArrow.exe&amp;#33;rxcpp&amp;#58;&amp;#58;EventLoopScheduler&amp;#58;&amp;#58;Derecurser&amp;#58;&amp;#58;EnsureThread&amp;#40;std&amp;#58;&amp;#58;function&amp;#60;std&amp;#58;&amp;#58;thread __cdecl&amp;#40;std&amp;#58;&amp;#58;function&amp;#60;void __cdecl&amp;#40;void&amp;#41;&amp;#62;&amp;#41;&amp;#62; &amp;#38; factory, std&amp;#58;&amp;#58;shared_ptr&amp;#60;rxcpp&amp;#58;&amp;#58;Scheduler&amp;#62; owner, std&amp;#58;&amp;#58;chrono&amp;#58;&amp;#58;time_point&amp;#60;std&amp;#58;&amp;#58;chrono&amp;#58;&amp;#58;system_clock,std&amp;#58;&amp;#58;chrono&amp;#58;&amp;#58;duration&amp;#60;__int64,std&amp;#58;&amp;#58;ratio&amp;#60;1,10000000&amp;#62; &amp;#62; &amp;#62; dueTime, std&amp;#58;&amp;#58;function&amp;#60;rxcpp&amp;#58;&amp;#58;Disposable __cdecl&amp;#40;std&amp;#58;&amp;#58;shared_ptr&amp;#60;rxcpp&amp;#58;&amp;#58;Scheduler&amp;#62;&amp;#41;&amp;#62; work&amp;#41; Line 401&amp;#9;C&amp;#43;&amp;#43;&lt;br /&gt;&lt;br /&gt;Comments: This is a bug in the concurrency runtime.&amp;#10;A connect bug exists and has been marked as fixed. perhaps we will have to wait for an update.&amp;#10;https&amp;#58;&amp;#47;&amp;#47;connect.microsoft.com&amp;#47;VisualStudio&amp;#47;feedback&amp;#47;details&amp;#47;762560&amp;#47;crash-in-runtime-library-msvcr110-dll&amp;#35;details&amp;#10;</description><author>kirkshoop</author><pubDate>Thu, 20 Jun 2013 01:42:22 GMT</pubDate><guid isPermaLink="false">Closed Unassigned: MfcTimeFliesLikeAnArrow crashes in rx-a82ffb9a7f4cdfe27c1530a2c5635c2b751ad630.zip [39] 20130620014222A</guid></item><item><title>Commented Unassigned: MfcTimeFliesLikeAnArrow crashes in rx-a82ffb9a7f4cdfe27c1530a2c5635c2b751ad630.zip [39]</title><link>http://rx.codeplex.com/workitem/39</link><description>Stack trace &amp;#40;always in __crtCloseThreadpoolTimer, right away or some time after running the app, VS2012 11.0.60315.01 Update 2 on Windows 8 Enterprise&amp;#41;&amp;#58;&lt;br /&gt;&lt;br /&gt; &amp;#9;ntdll.dll&amp;#33;77940dd9&amp;#40;&amp;#41;&amp;#9;Unknown&lt;br /&gt; &amp;#9;&amp;#91;Frames below may be incorrect and&amp;#47;or missing, no symbols loaded for ntdll.dll&amp;#93;&amp;#9;&lt;br /&gt; &amp;#9;ntdll.dll&amp;#33;77910e81&amp;#40;&amp;#41;&amp;#9;Unknown&lt;br /&gt; &amp;#9;ntdll.dll&amp;#33;778a75d2&amp;#40;&amp;#41;&amp;#9;Unknown&lt;br /&gt;&amp;#62;&amp;#9;MfcTimeFliesLikeAnArrow.exe&amp;#33;__crtCloseThreadpoolTimer&amp;#40;_TP_TIMER &amp;#42; pti&amp;#41; Line 556&amp;#9;C&lt;br /&gt; &amp;#9;MfcTimeFliesLikeAnArrow.exe&amp;#33;Concurrency&amp;#58;&amp;#58;details&amp;#58;&amp;#58;DeleteAsyncTimerAndUnloadLibrary&amp;#40;_TP_TIMER &amp;#42; timer&amp;#41; Line 696&amp;#9;C&amp;#43;&amp;#43;&lt;br /&gt; &amp;#9;MfcTimeFliesLikeAnArrow.exe&amp;#33;Concurrency&amp;#58;&amp;#58;details&amp;#58;&amp;#58;TimedSingleWaitBlock&amp;#58;&amp;#58;destroyTimer&amp;#40;bool waitForOutstandingCallback&amp;#41; Line 454&amp;#9;C&amp;#43;&amp;#43;&lt;br /&gt; &amp;#9;MfcTimeFliesLikeAnArrow.exe&amp;#33;Concurrency&amp;#58;&amp;#58;details&amp;#58;&amp;#58;TimedSingleWaitBlock&amp;#58;&amp;#58;Satisfy&amp;#40;Concurrency&amp;#58;&amp;#58;Context &amp;#42; &amp;#42; pContextOut, Concurrency&amp;#58;&amp;#58;details&amp;#58;&amp;#58;EventWaitNode &amp;#42; pNode&amp;#41; Line 484&amp;#9;C&amp;#43;&amp;#43;&lt;br /&gt; &amp;#9;MfcTimeFliesLikeAnArrow.exe&amp;#33;Concurrency&amp;#58;&amp;#58;details&amp;#58;&amp;#58;EventWaitNode&amp;#58;&amp;#58;Satisfy&amp;#40;Concurrency&amp;#58;&amp;#58;Context &amp;#42; &amp;#42; pContextOut&amp;#41; Line 330&amp;#9;C&amp;#43;&amp;#43;&lt;br /&gt; &amp;#9;MfcTimeFliesLikeAnArrow.exe&amp;#33;Concurrency&amp;#58;&amp;#58;details&amp;#58;&amp;#58;_Condition_variable&amp;#58;&amp;#58;notify_one&amp;#40;&amp;#41; Line 645&amp;#9;C&amp;#43;&amp;#43;&lt;br /&gt; &amp;#9;MfcTimeFliesLikeAnArrow.exe&amp;#33;do_signal&amp;#40;_Cnd_internal_imp_t &amp;#42; &amp;#42; cond, int all&amp;#41; Line 68&amp;#9;C&amp;#43;&amp;#43;&lt;br /&gt; &amp;#9;MfcTimeFliesLikeAnArrow.exe&amp;#33;_Cnd_signal&amp;#40;_Cnd_internal_imp_t &amp;#42; &amp;#42; cond&amp;#41; Line 83&amp;#9;C&amp;#43;&amp;#43;&lt;br /&gt; &amp;#9;MfcTimeFliesLikeAnArrow.exe&amp;#33;std&amp;#58;&amp;#58;_Cnd_signalX&amp;#40;_Cnd_internal_imp_t &amp;#42; &amp;#42; _Cnd&amp;#41; Line 108&amp;#9;C&amp;#43;&amp;#43;&lt;br /&gt; &amp;#9;MfcTimeFliesLikeAnArrow.exe&amp;#33;std&amp;#58;&amp;#58;condition_variable&amp;#58;&amp;#58;notify_one&amp;#40;&amp;#41; Line 50&amp;#9;C&amp;#43;&amp;#43;&lt;br /&gt; &amp;#9;MfcTimeFliesLikeAnArrow.exe&amp;#33;rxcpp&amp;#58;&amp;#58;EventLoopScheduler&amp;#58;&amp;#58;Derecurser&amp;#58;&amp;#58;EnsureThread&amp;#40;std&amp;#58;&amp;#58;function&amp;#60;std&amp;#58;&amp;#58;thread __cdecl&amp;#40;std&amp;#58;&amp;#58;function&amp;#60;void __cdecl&amp;#40;void&amp;#41;&amp;#62;&amp;#41;&amp;#62; &amp;#38; factory, std&amp;#58;&amp;#58;shared_ptr&amp;#60;rxcpp&amp;#58;&amp;#58;Scheduler&amp;#62; owner, std&amp;#58;&amp;#58;chrono&amp;#58;&amp;#58;time_point&amp;#60;std&amp;#58;&amp;#58;chrono&amp;#58;&amp;#58;system_clock,std&amp;#58;&amp;#58;chrono&amp;#58;&amp;#58;duration&amp;#60;__int64,std&amp;#58;&amp;#58;ratio&amp;#60;1,10000000&amp;#62; &amp;#62; &amp;#62; dueTime, std&amp;#58;&amp;#58;function&amp;#60;rxcpp&amp;#58;&amp;#58;Disposable __cdecl&amp;#40;std&amp;#58;&amp;#58;shared_ptr&amp;#60;rxcpp&amp;#58;&amp;#58;Scheduler&amp;#62;&amp;#41;&amp;#62; work&amp;#41; Line 401&amp;#9;C&amp;#43;&amp;#43;&lt;br /&gt;&lt;br /&gt;Comments: Thanks for the report.&amp;#10;&amp;#10;I can reproduce this. If I remove the observe_on then I cannot repro. That may be due to the WindowScheduler using PostMessage &amp;#40;which returns immediately&amp;#41; while without the WindowScheduler SetWindowPos is called &amp;#40;which ends up blocking in SendMessage&amp;#41;.  This would affect the timing of the EventScheduler thread management. I have not diagnosed the source of the problem yet though. &amp;#10;</description><author>kirkshoop</author><pubDate>Wed, 19 Jun 2013 16:35:06 GMT</pubDate><guid isPermaLink="false">Commented Unassigned: MfcTimeFliesLikeAnArrow crashes in rx-a82ffb9a7f4cdfe27c1530a2c5635c2b751ad630.zip [39] 20130619043506P</guid></item><item><title>Created Unassigned: MfcTimeFliesLikeAnArrow crashes in rx-a82ffb9a7f4cdfe27c1530a2c5635c2b751ad630.zip [39]</title><link>http://rx.codeplex.com/workitem/39</link><description>Stack trace &amp;#40;always in __crtCloseThreadpoolTimer, right away or some time after running the app, VS2012 11.0.60315.01 Update 2 on Windows 8 Enterprise&amp;#41;&amp;#58;&lt;br /&gt;&lt;br /&gt; &amp;#9;ntdll.dll&amp;#33;77940dd9&amp;#40;&amp;#41;&amp;#9;Unknown&lt;br /&gt; &amp;#9;&amp;#91;Frames below may be incorrect and&amp;#47;or missing, no symbols loaded for ntdll.dll&amp;#93;&amp;#9;&lt;br /&gt; &amp;#9;ntdll.dll&amp;#33;77910e81&amp;#40;&amp;#41;&amp;#9;Unknown&lt;br /&gt; &amp;#9;ntdll.dll&amp;#33;778a75d2&amp;#40;&amp;#41;&amp;#9;Unknown&lt;br /&gt;&amp;#62;&amp;#9;MfcTimeFliesLikeAnArrow.exe&amp;#33;__crtCloseThreadpoolTimer&amp;#40;_TP_TIMER &amp;#42; pti&amp;#41; Line 556&amp;#9;C&lt;br /&gt; &amp;#9;MfcTimeFliesLikeAnArrow.exe&amp;#33;Concurrency&amp;#58;&amp;#58;details&amp;#58;&amp;#58;DeleteAsyncTimerAndUnloadLibrary&amp;#40;_TP_TIMER &amp;#42; timer&amp;#41; Line 696&amp;#9;C&amp;#43;&amp;#43;&lt;br /&gt; &amp;#9;MfcTimeFliesLikeAnArrow.exe&amp;#33;Concurrency&amp;#58;&amp;#58;details&amp;#58;&amp;#58;TimedSingleWaitBlock&amp;#58;&amp;#58;destroyTimer&amp;#40;bool waitForOutstandingCallback&amp;#41; Line 454&amp;#9;C&amp;#43;&amp;#43;&lt;br /&gt; &amp;#9;MfcTimeFliesLikeAnArrow.exe&amp;#33;Concurrency&amp;#58;&amp;#58;details&amp;#58;&amp;#58;TimedSingleWaitBlock&amp;#58;&amp;#58;Satisfy&amp;#40;Concurrency&amp;#58;&amp;#58;Context &amp;#42; &amp;#42; pContextOut, Concurrency&amp;#58;&amp;#58;details&amp;#58;&amp;#58;EventWaitNode &amp;#42; pNode&amp;#41; Line 484&amp;#9;C&amp;#43;&amp;#43;&lt;br /&gt; &amp;#9;MfcTimeFliesLikeAnArrow.exe&amp;#33;Concurrency&amp;#58;&amp;#58;details&amp;#58;&amp;#58;EventWaitNode&amp;#58;&amp;#58;Satisfy&amp;#40;Concurrency&amp;#58;&amp;#58;Context &amp;#42; &amp;#42; pContextOut&amp;#41; Line 330&amp;#9;C&amp;#43;&amp;#43;&lt;br /&gt; &amp;#9;MfcTimeFliesLikeAnArrow.exe&amp;#33;Concurrency&amp;#58;&amp;#58;details&amp;#58;&amp;#58;_Condition_variable&amp;#58;&amp;#58;notify_one&amp;#40;&amp;#41; Line 645&amp;#9;C&amp;#43;&amp;#43;&lt;br /&gt; &amp;#9;MfcTimeFliesLikeAnArrow.exe&amp;#33;do_signal&amp;#40;_Cnd_internal_imp_t &amp;#42; &amp;#42; cond, int all&amp;#41; Line 68&amp;#9;C&amp;#43;&amp;#43;&lt;br /&gt; &amp;#9;MfcTimeFliesLikeAnArrow.exe&amp;#33;_Cnd_signal&amp;#40;_Cnd_internal_imp_t &amp;#42; &amp;#42; cond&amp;#41; Line 83&amp;#9;C&amp;#43;&amp;#43;&lt;br /&gt; &amp;#9;MfcTimeFliesLikeAnArrow.exe&amp;#33;std&amp;#58;&amp;#58;_Cnd_signalX&amp;#40;_Cnd_internal_imp_t &amp;#42; &amp;#42; _Cnd&amp;#41; Line 108&amp;#9;C&amp;#43;&amp;#43;&lt;br /&gt; &amp;#9;MfcTimeFliesLikeAnArrow.exe&amp;#33;std&amp;#58;&amp;#58;condition_variable&amp;#58;&amp;#58;notify_one&amp;#40;&amp;#41; Line 50&amp;#9;C&amp;#43;&amp;#43;&lt;br /&gt; &amp;#9;MfcTimeFliesLikeAnArrow.exe&amp;#33;rxcpp&amp;#58;&amp;#58;EventLoopScheduler&amp;#58;&amp;#58;Derecurser&amp;#58;&amp;#58;EnsureThread&amp;#40;std&amp;#58;&amp;#58;function&amp;#60;std&amp;#58;&amp;#58;thread __cdecl&amp;#40;std&amp;#58;&amp;#58;function&amp;#60;void __cdecl&amp;#40;void&amp;#41;&amp;#62;&amp;#41;&amp;#62; &amp;#38; factory, std&amp;#58;&amp;#58;shared_ptr&amp;#60;rxcpp&amp;#58;&amp;#58;Scheduler&amp;#62; owner, std&amp;#58;&amp;#58;chrono&amp;#58;&amp;#58;time_point&amp;#60;std&amp;#58;&amp;#58;chrono&amp;#58;&amp;#58;system_clock,std&amp;#58;&amp;#58;chrono&amp;#58;&amp;#58;duration&amp;#60;__int64,std&amp;#58;&amp;#58;ratio&amp;#60;1,10000000&amp;#62; &amp;#62; &amp;#62; dueTime, std&amp;#58;&amp;#58;function&amp;#60;rxcpp&amp;#58;&amp;#58;Disposable __cdecl&amp;#40;std&amp;#58;&amp;#58;shared_ptr&amp;#60;rxcpp&amp;#58;&amp;#58;Scheduler&amp;#62;&amp;#41;&amp;#62; work&amp;#41; Line 401&amp;#9;C&amp;#43;&amp;#43;&lt;br /&gt;&lt;br /&gt;</description><author>Tonko</author><pubDate>Wed, 19 Jun 2013 04:33:31 GMT</pubDate><guid isPermaLink="false">Created Unassigned: MfcTimeFliesLikeAnArrow crashes in rx-a82ffb9a7f4cdfe27c1530a2c5635c2b751ad630.zip [39] 20130619043331A</guid></item><item><title>Closed Unassigned: OnNext should not be protected by try catch [38]</title><link>http://rx.codeplex.com/workitem/38</link><description>For more detailed justification refer to the discussion at&amp;#58;&lt;br /&gt;&amp;#91;Discussion link&amp;#93;&amp;#40;https&amp;#58;&amp;#47;&amp;#47;rx.codeplex.com&amp;#47;discussions&amp;#47;430625&amp;#41;&lt;br /&gt;&lt;br /&gt;Specifically, user code executing inside OnNext in CreatedObserver should not be protected by try&amp;#47;catch statements. To quote Rx Design guidelines&amp;#58;&lt;br /&gt;&amp;#62; Note&amp;#58; do not protect calls to Subscribe, Dispose, OnNext, OnError and OnCompleted methods. These calls are on the edge of the monad. Calling the OnError method from these places will lead to unexpected behavior&lt;br /&gt;&lt;br /&gt;The code for Rx operators should also be inspected to insure that user code exceptions can be clearly distinguished from Rx-operator-specific exceptions.&lt;br /&gt;&lt;br /&gt;Comments: pushed changes</description><author>kirkshoop</author><pubDate>Tue, 18 Jun 2013 04:45:24 GMT</pubDate><guid isPermaLink="false">Closed Unassigned: OnNext should not be protected by try catch [38] 20130618044524A</guid></item><item><title>Commented Unassigned: OnNext should not be protected by try catch [38]</title><link>http://rx.codeplex.com/workitem/38</link><description>For more detailed justification refer to the discussion at&amp;#58;&lt;br /&gt;&amp;#91;Discussion link&amp;#93;&amp;#40;https&amp;#58;&amp;#47;&amp;#47;rx.codeplex.com&amp;#47;discussions&amp;#47;430625&amp;#41;&lt;br /&gt;&lt;br /&gt;Specifically, user code executing inside OnNext in CreatedObserver should not be protected by try&amp;#47;catch statements. To quote Rx Design guidelines&amp;#58;&lt;br /&gt;&amp;#62; Note&amp;#58; do not protect calls to Subscribe, Dispose, OnNext, OnError and OnCompleted methods. These calls are on the edge of the monad. Calling the OnError method from these places will lead to unexpected behavior&lt;br /&gt;&lt;br /&gt;The code for Rx operators should also be inspected to insure that user code exceptions can be clearly distinguished from Rx-operator-specific exceptions.&lt;br /&gt;&lt;br /&gt;Comments: Kirk,&amp;#10;&amp;#10;that looks really good, as far as I can tell. I also hope to contribute with more test cases in the future, not necessarily related just to this issue.&amp;#10;&amp;#10;We also got CreatedAutoDetachObserver now&amp;#63; Cool&amp;#33;&amp;#10;&amp;#10;I can&amp;#39;t wait to start using Rx C&amp;#43;&amp;#43; in production code.</description><author>Tonko</author><pubDate>Tue, 18 Jun 2013 03:39:19 GMT</pubDate><guid isPermaLink="false">Commented Unassigned: OnNext should not be protected by try catch [38] 20130618033919A</guid></item><item><title>Commented Unassigned: OnNext should not be protected by try catch [38]</title><link>http://rx.codeplex.com/workitem/38</link><description>For more detailed justification refer to the discussion at&amp;#58;&lt;br /&gt;&amp;#91;Discussion link&amp;#93;&amp;#40;https&amp;#58;&amp;#47;&amp;#47;rx.codeplex.com&amp;#47;discussions&amp;#47;430625&amp;#41;&lt;br /&gt;&lt;br /&gt;Specifically, user code executing inside OnNext in CreatedObserver should not be protected by try&amp;#47;catch statements. To quote Rx Design guidelines&amp;#58;&lt;br /&gt;&amp;#62; Note&amp;#58; do not protect calls to Subscribe, Dispose, OnNext, OnError and OnCompleted methods. These calls are on the edge of the monad. Calling the OnError method from these places will lead to unexpected behavior&lt;br /&gt;&lt;br /&gt;The code for Rx operators should also be inspected to insure that user code exceptions can be clearly distinguished from Rx-operator-specific exceptions.&lt;br /&gt;&lt;br /&gt;Comments: Thanks Tonko&amp;#33;&amp;#10;&amp;#10;Can you take a look at this pull request&amp;#63; &amp;#10;&amp;#10;https&amp;#58;&amp;#47;&amp;#47;rx.codeplex.com&amp;#47;SourceControl&amp;#47;network&amp;#47;forks&amp;#47;kirkshoop&amp;#47;Rx&amp;#47;contribution&amp;#47;4918&amp;#10;&amp;#10;Then let me know if this solves your issue. &amp;#58;&amp;#41;&amp;#10;&amp;#10;Kirk</description><author>kirkshoop</author><pubDate>Mon, 17 Jun 2013 18:18:58 GMT</pubDate><guid isPermaLink="false">Commented Unassigned: OnNext should not be protected by try catch [38] 20130617061858P</guid></item><item><title>Created Unassigned: OnNext should not be protected by try catch [38]</title><link>http://rx.codeplex.com/workitem/38</link><description>For more detailed justification refer to the discussion at&amp;#58;&lt;br /&gt;&amp;#91;Discussion link&amp;#93;&amp;#40;https&amp;#58;&amp;#47;&amp;#47;rx.codeplex.com&amp;#47;discussions&amp;#47;430625&amp;#41;&lt;br /&gt;&lt;br /&gt;Specifically, user code executing inside OnNext in CreatedObserver should not be protected by try&amp;#47;catch statements. To quote Rx Design guidelines&amp;#58;&lt;br /&gt;&amp;#62; Note&amp;#58; do not protect calls to Subscribe, Dispose, OnNext, OnError and OnCompleted methods. These calls are on the edge of the monad. Calling the OnError method from these places will lead to unexpected behavior&lt;br /&gt;&lt;br /&gt;The code for Rx operators should also be inspected to insure that user code exceptions can be clearly distinguished from Rx-operator-specific exceptions.&lt;br /&gt;&lt;br /&gt;</description><author>Tonko</author><pubDate>Mon, 17 Jun 2013 14:34:10 GMT</pubDate><guid isPermaLink="false">Created Unassigned: OnNext should not be protected by try catch [38] 20130617023410P</guid></item><item><title>Created Unassigned: EventLoopScheduler SemaphoreFullException [37]</title><link>http://rx.codeplex.com/workitem/37</link><description>__EventLoopScheduler.Schedule__ may throw __SemaphoreFullException__.  It appears that it may be due to a couple of race conditions in the __Run__ method&amp;#58; &lt;br /&gt;&lt;br /&gt;1. Between the call to __Wait__ and acquisition of the lock.&lt;br /&gt;2. Dequeueing expired items in a loop, without calling __Wait__ for each item.&lt;br /&gt;&lt;br /&gt;Related discussion&amp;#58; &lt;br /&gt;http&amp;#58;&amp;#47;&amp;#47;social.msdn.microsoft.com&amp;#47;Forums&amp;#47;en-US&amp;#47;rx&amp;#47;thread&amp;#47;223f2447-4cb9-47ce-be21-6fd0e5b45e30&amp;#47;&amp;#63;prof&amp;#61;required&lt;br /&gt;</description><author>davedev</author><pubDate>Thu, 13 Jun 2013 18:08:31 GMT</pubDate><guid isPermaLink="false">Created Unassigned: EventLoopScheduler SemaphoreFullException [37] 20130613060831P</guid></item><item><title>Created Unassigned: Suggestion: AsObservablesWithPrecedence Operator [36]</title><link>http://rx.codeplex.com/workitem/36</link><description>Implement an overloaded operator named AsObservablesWithPrecedence that accepts an ISubject&amp;#60;T&amp;#62; and yields a list of observables with the specified subscription precedence, indicating the expected order of observations among the hot observables for a given notification.&lt;br /&gt;&lt;br /&gt;Example implementation&amp;#58; &lt;br /&gt;http&amp;#58;&amp;#47;&amp;#47;social.msdn.microsoft.com&amp;#47;Forums&amp;#47;en-US&amp;#47;rx&amp;#47;thread&amp;#47;a97a7e97-cb3d-4b42-afcb-8cb2c88c1778&lt;br /&gt;&lt;br /&gt;Precedence is only guaranteed if all of the following are true&amp;#58; &lt;br /&gt;&lt;br /&gt;1. The ISubject implementation natively ensures subscription precedence.&lt;br /&gt;2. The ISubject&amp;#39;s callers obey the Rx Grammar and serialize notifications&amp;#59; e.g., calls to OnNext never overlap.&lt;br /&gt;3. Subscriptions to the ISubject are never made concurrently.  &amp;#40;Though subscriptions to the generated observables can be made concurrently.&amp;#41;&lt;br /&gt;&lt;br /&gt;Related discussion&amp;#58; &lt;br /&gt;http&amp;#58;&amp;#47;&amp;#47;social.msdn.microsoft.com&amp;#47;Forums&amp;#47;en-US&amp;#47;rx&amp;#47;thread&amp;#47;ac721f91-4dbc-40b8-a2b2-19f00998239f&lt;br /&gt;</description><author>davedev</author><pubDate>Sun, 09 Jun 2013 15:57:18 GMT</pubDate><guid isPermaLink="false">Created Unassigned: Suggestion: AsObservablesWithPrecedence Operator [36] 20130609035718P</guid></item><item><title>Commented Unassigned: Optimise ReplaySubject for specific cases [35]</title><link>http://rx.codeplex.com/workitem/35</link><description>Currently the ReplaySubject is a very versatile class that can perform 5 major use cases&lt;br /&gt;1. Replay-One. Caching and replaying the last value.&lt;br /&gt;2. Replay-Many. &amp;#40;i.e. a value &amp;#62; 1&amp;#41;&lt;br /&gt;3. Replay-Period. Cache data for a period of time for late subscribers&lt;br /&gt;4. Replay by count and time. A combination of caching by count and period.&lt;br /&gt;5. Replay-All. Cache and replay all values.&lt;br /&gt;&lt;br /&gt;It seems to me that the most common usage&amp;#42; of Replay, &amp;#34;Replay&amp;#40;1&amp;#41;&amp;#34; incurs the cost of all the Scheduling and Buffering of the other implementations &amp;#40;Stopwatches, Queues, ImmutableLists of ScheduledObservers and the relevant checks&amp;#41;.&lt;br /&gt;&lt;br /&gt;My proposal is this&amp;#58; as the _bufferSize_ and _window_ are readonly values of a ReplaySubject, a specialization of the inner workings of the ReplaySubject can be loaded at construction time. For example if the new Replay&amp;#40;1&amp;#41; constructor was called then an internal implementation could be resolved that was specific and optimized for the behavior required by a Replay-one subject &amp;#58;&lt;br /&gt;&amp;#42; Use ImmutableList&amp;#60;IObserver&amp;#60;T&amp;#62;&amp;#62; instead of ImmutableList&amp;#60;SchduedledObserver&amp;#60;T&amp;#62;&amp;#62;, &lt;br /&gt;&amp;#42; no StopWatch, &lt;br /&gt;&amp;#42; no internal Queue of cached values &lt;br /&gt;&amp;#42; no Time and queue depth checks on every OnNext&lt;br /&gt;&lt;br /&gt;For Replay&amp;#40;n&amp;#41; where n&amp;#62;1, then an implementation with an intenal queue could be used. Still this implementation would have no need for the ImmutableList&amp;#60;SchduedledObserver&amp;#60;T&amp;#62;&amp;#62;, StopWatch and the time checks on the OnNext call.&lt;br /&gt;&lt;br /&gt;The two constructors that take a Window and a bufferSize&amp;#43;Window, could share an internal implemenation as I doubt there would be much perf difference between the two.&lt;br /&gt;&lt;br /&gt;Finally the Reply-all behaviour where the parameterless constructor is used, could use the Replay-Many implementation passing Int.Max as a param, but this would still needlessly be calling the Trim method for each OnNext, so again is a candidate for specialization.&lt;br /&gt;&lt;br /&gt;&amp;#42;In my opinion Replay&amp;#40;1&amp;#41; would be the most used operation of the ReplaySubject or the associated Replay extension method.&lt;br /&gt;Comments: FYI&amp;#58; Code fork is currently at&amp;#10;http&amp;#58;&amp;#47;&amp;#47;rx.codeplex.com&amp;#47;SourceControl&amp;#47;network&amp;#47;forks&amp;#47;LeeCampbell&amp;#47;Rx&amp;#10;&amp;#10;I will be looking to get code reviews done on it &amp;#40;feel free anyone&amp;#41; and then submit it as a pull request once I have collated some performance tests to justify the change.</description><author>LeeCampbell</author><pubDate>Wed, 05 Jun 2013 22:00:59 GMT</pubDate><guid isPermaLink="false">Commented Unassigned: Optimise ReplaySubject for specific cases [35] 20130605100059P</guid></item><item><title>Commented Issue: Help messages for obsolete APIs just refer the reader to Bing [18]</title><link>http://rx.codeplex.com/workitem/18</link><description>There are a number of help messages for obsolete methods and properties which have help messages which end with &amp;#34;See http&amp;#58;&amp;#47;&amp;#47;go.microsoft.com&amp;#47;fwlink&amp;#47;&amp;#63;LinkID&amp;#61;260866 for more information.&amp;#34; However, this URL resolves to http&amp;#58;&amp;#47;&amp;#47;www.bing.com which doesn&amp;#39;t really help.&lt;br /&gt;&lt;br /&gt;Can these messages be updated to refer to some more specific content, or removed&amp;#63;&lt;br /&gt;&lt;br /&gt;Locations&amp;#58;&lt;br /&gt;&lt;br /&gt;&amp;#42; Rx&amp;#92;NET&amp;#92;Source&amp;#92;System.Reactive.Core&amp;#92;Reactive&amp;#92;Internal&amp;#92;Constants.cs&amp;#40;11&amp;#41;&amp;#58;        public const string OBSOLETE_SCHEDULER_NEWTHREAD  &amp;#61; OBSOLETE_REFACTORING &amp;#43; &amp;#34; Please add a reference to the System.Reactive.PlatformServices assembly for your target platform and use NewThreadScheduler.Default to obtain an instance of this scheduler type. See http&amp;#58;&amp;#47;&amp;#47;go.microsoft.com&amp;#47;fwlink&amp;#47;&amp;#63;LinkID&amp;#61;260866 for more information.&amp;#34;&amp;#59;&lt;br /&gt;&amp;#42; Rx&amp;#92;NET&amp;#92;Source&amp;#92;System.Reactive.Core&amp;#92;Reactive&amp;#92;Internal&amp;#92;Constants.cs&amp;#40;12&amp;#41;&amp;#58;        public const string OBSOLETE_SCHEDULER_TASKPOOL   &amp;#61; OBSOLETE_REFACTORING &amp;#43; &amp;#34; Please add a reference to the System.Reactive.PlatformServices assembly for your target platform and use TaskPoolScheduler.Default to obtain an instance of this scheduler type. See http&amp;#58;&amp;#47;&amp;#47;go.microsoft.com&amp;#47;fwlink&amp;#47;&amp;#63;LinkID&amp;#61;260866 for more information.&amp;#34;&amp;#59;&lt;br /&gt;&amp;#42; Rx&amp;#92;NET&amp;#92;Source&amp;#92;System.Reactive.Core&amp;#92;Reactive&amp;#92;Internal&amp;#92;Constants.cs&amp;#40;13&amp;#41;&amp;#58;        public const string OBSOLETE_SCHEDULER_THREADPOOL &amp;#61; OBSOLETE_REFACTORING &amp;#43; &amp;#34; Consider using Scheduler.Default to obtain the platform&amp;#39;s most appropriate pool-based scheduler. In order to access a specific pool-based scheduler, please add a reference to the System.Reactive.PlatformServices assembly for your target platform and use the appropriate scheduler in the System.Reactive.Concurrency namespace. See http&amp;#58;&amp;#47;&amp;#47;go.microsoft.com&amp;#47;fwlink&amp;#47;&amp;#63;LinkID&amp;#61;260866 for more information.&amp;#34;&amp;#59;&lt;br /&gt;&amp;#42; Rx&amp;#92;NET&amp;#92;Source&amp;#92;System.Reactive.Core&amp;#92;Reactive&amp;#92;Internal&amp;#92;Constants.cs&amp;#40;15&amp;#41;&amp;#58;        public const string OBSOLETE_SCHEDULEREQUIRED     &amp;#61; &amp;#34;This instance property is no longer supported. Use CurrentThreadScheduler.IsScheduleRequired instead. See http&amp;#58;&amp;#47;&amp;#47;go.microsoft.com&amp;#47;fwlink&amp;#47;&amp;#63;LinkID&amp;#61;260866 for more information.&amp;#34;&amp;#59;&lt;br /&gt;&amp;#42; Rx&amp;#92;NET&amp;#92;Source&amp;#92;System.Reactive.Linq&amp;#92;Reactive&amp;#92;Internal&amp;#92;Constants.cs&amp;#40;14&amp;#41;&amp;#58;        public const string USE_ASYNC &amp;#61; &amp;#34;This blocking operation is no longer supported. Instead, use the async version in combination with C&amp;#35; and Visual Basic async&amp;#47;await support. In case you need a blocking operation, use Wait or convert the resulting observable sequence to a Task object and block. See http&amp;#58;&amp;#47;&amp;#47;go.microsoft.com&amp;#47;fwlink&amp;#47;&amp;#63;LinkID&amp;#61;260866 for more information.&amp;#34;&amp;#59;&lt;br /&gt;&amp;#42; Rx&amp;#92;NET&amp;#92;Source&amp;#92;System.Reactive.Linq&amp;#92;Reactive&amp;#92;Internal&amp;#92;Constants.cs&amp;#40;15&amp;#41;&amp;#58;        public const string USE_TASK_FROMASYNCPATTERN &amp;#61; &amp;#34;This conversion is no longer supported. Replace use of the Begin&amp;#47;End asynchronous method pair with a new Task-based async method, and convert the result using ToObservable. If no Task-based async method is available, use Task.Factory.FromAsync to obtain a Task object. See http&amp;#58;&amp;#47;&amp;#47;go.microsoft.com&amp;#47;fwlink&amp;#47;&amp;#63;LinkID&amp;#61;260866 for more information.&amp;#34;&amp;#59;&lt;br /&gt;&amp;#42; Rx&amp;#92;NET&amp;#92;Source&amp;#92;System.Reactive.Providers&amp;#92;Reactive&amp;#92;Internal&amp;#92;Constants.cs&amp;#40;14&amp;#41;&amp;#58;        public const string USE_ASYNC &amp;#61; &amp;#34;This blocking operation is no longer supported. Instead, use the async version in combination with C&amp;#35; and Visual Basic async&amp;#47;await support. In case you need a blocking operation, use Wait or convert the resulting observable sequence to a Task object and block. See http&amp;#58;&amp;#47;&amp;#47;go.microsoft.com&amp;#47;fwlink&amp;#47;&amp;#63;LinkID&amp;#61;260866 for more information.&amp;#34;&amp;#59;&lt;br /&gt;&amp;#42; Rx&amp;#92;NET&amp;#92;Source&amp;#92;System.Reactive.Providers&amp;#92;Reactive&amp;#92;Internal&amp;#92;Constants.cs&amp;#40;15&amp;#41;&amp;#58;        public const string USE_TASK_FROMASYNCPATTERN &amp;#61; &amp;#34;This conversion is no longer supported. Replace use of the Begin&amp;#47;End asynchronous method pair with a new Task-based async method, and convert the result using ToObservable. If no Task-based async method is available, use Task.Factory.FromAsync to obtain a Task object. See http&amp;#58;&amp;#47;&amp;#47;go.microsoft.com&amp;#47;fwlink&amp;#47;&amp;#63;LinkID&amp;#61;260866 for more information.&amp;#34;&amp;#59;&lt;br /&gt;&amp;#42; Rx&amp;#92;NET&amp;#92;Source&amp;#92;System.Reactive.Windows.Threading&amp;#92;Reactive&amp;#92;Internal&amp;#92;Constants.cs&amp;#40;10&amp;#41;&amp;#58;        public const string OBSOLETE_INSTANCE_PROPERTY &amp;#61; &amp;#34;Use the Current property to retrieve the DispatcherScheduler instance for the current thread&amp;#39;s Dispatcher object. See http&amp;#58;&amp;#47;&amp;#47;go.microsoft.com&amp;#47;fwlink&amp;#47;&amp;#63;LinkID&amp;#61;260866 for more information.&amp;#34;&amp;#59;&lt;br /&gt;Comments: Thanks for the detailed list--we know a lot of the links became broken when the MSDN documentation changed location.&amp;#10;&amp;#10;We are in the process of pulling in the MSDN docs into the git repository, so once that is complete, we can fix the FW links. Thanks for your patience&amp;#33;&amp;#10;</description><author>malayeri</author><pubDate>Mon, 03 Jun 2013 23:31:32 GMT</pubDate><guid isPermaLink="false">Commented Issue: Help messages for obsolete APIs just refer the reader to Bing [18] 20130603113132P</guid></item><item><title>Commented Issue: Observable.Timer() and Observable.Interval() throw exception if period == 0 [13]</title><link>http://rx.codeplex.com/workitem/13</link><description>Even though the documentation says period &amp;#61;&amp;#61; 0 is supported&amp;#58;&lt;br /&gt;&lt;br /&gt;&amp;#96;&amp;#96;&amp;#96;&lt;br /&gt;&amp;#47;&amp;#47;&amp;#47; &amp;#60;param name&amp;#61;&amp;#34;period&amp;#34;&amp;#62;Period to produce subsequent values. If this value is equal to TimeSpan.Zero, the timer will recur as fast as possible.&amp;#60;&amp;#47;param&amp;#62;&lt;br /&gt;&amp;#96;&amp;#96;&amp;#96;&lt;br /&gt;&lt;br /&gt;Here is an example exception stack trace&amp;#58;&lt;br /&gt;&amp;#96;&amp;#96;&amp;#96;&lt;br /&gt;   at System.Reactive.Concurrency.ConcurrencyAbstractionLayerImpl.StartPeriodicTimer&amp;#40;Action action, TimeSpan period&amp;#41;&lt;br /&gt;   at System.Reactive.Concurrency.DefaultScheduler.SchedulePeriodic&amp;#91;TState&amp;#93;&amp;#40;TState state, TimeSpan period, Func&amp;#96;2 action&amp;#41;&lt;br /&gt;   at System.Reactive.Concurrency.Scheduler.SchedulePeriodic_&amp;#91;TState&amp;#93;&amp;#40;IScheduler scheduler, TState state, TimeSpan period, Func&amp;#96;2 action&amp;#41;&lt;br /&gt;   at System.Reactive.Concurrency.Scheduler.SchedulePeriodic&amp;#91;TState&amp;#93;&amp;#40;IScheduler scheduler, TState state, TimeSpan period, Func&amp;#96;2 action&amp;#41;&lt;br /&gt;   at System.Reactive.Linq.Observαble.Timer.π.Run&amp;#40;&amp;#41;&lt;br /&gt;   at System.Reactive.Linq.Observαble.Timer.Run&amp;#40;IObserver&amp;#96;1 observer, IDisposable cancel, Action&amp;#96;1 setSink&amp;#41;&lt;br /&gt;&amp;#40;remainder elided&amp;#41;&lt;br /&gt;&amp;#96;&amp;#96;&amp;#96;&lt;br /&gt;&lt;br /&gt;The issue seems to be this code in __System.Reactive.Concurrency.ConcurrencyAbstractionLayerImpl.StartPeriodicTimer&amp;#40;Action action, TimeSpan period&amp;#41;__&amp;#58;&lt;br /&gt;&amp;#96;&amp;#96;&amp;#96;&lt;br /&gt;&amp;#47;&amp;#47;&lt;br /&gt;&amp;#47;&amp;#47; MSDN documentation states the following&amp;#58;&lt;br /&gt;&amp;#47;&amp;#47;&lt;br /&gt;&amp;#47;&amp;#47;    &amp;#34;If period is zero &amp;#40;0&amp;#41; or negative one &amp;#40;-1&amp;#41; milliseconds and dueTime is positive, callback is invoked once&amp;#59;&lt;br /&gt;&amp;#47;&amp;#47;     the periodic behavior of the timer is disabled, but can be re-enabled using the Change method.&amp;#34;&lt;br /&gt;&amp;#47;&amp;#47;&lt;br /&gt;if &amp;#40;period &amp;#60;&amp;#61; TimeSpan.Zero&amp;#41;&lt;br /&gt;    throw new ArgumentOutOfRangeException&amp;#40;&amp;#34;period&amp;#34;&amp;#41;&amp;#59;&lt;br /&gt;&amp;#96;&amp;#96;&amp;#96;&lt;br /&gt;&lt;br /&gt;Even the comment seems to indicate Period&amp;#61;&amp;#61;0 is allowed.&lt;br /&gt;Comments: Pull request&amp;#58; &amp;#10;https&amp;#58;&amp;#47;&amp;#47;rx.codeplex.com&amp;#47;SourceControl&amp;#47;network&amp;#47;forks&amp;#47;davedev&amp;#47;RxPeriodZero&amp;#47;contribution&amp;#47;4608</description><author>davedev</author><pubDate>Tue, 30 Apr 2013 21:46:41 GMT</pubDate><guid isPermaLink="false">Commented Issue: Observable.Timer() and Observable.Interval() throw exception if period == 0 [13] 20130430094641P</guid></item><item><title>Commented Issue: BehaviorSubject&lt;T&gt;.Current Property [8]</title><link>http://rx.codeplex.com/workitem/8</link><description>Please add a Current or Value property to BehaviorSubject&amp;#60;T&amp;#62; returning the instantaneous value so that it can be used more elegantly as a backing field for observable properties where the containing class may need to extract the current value imperatively, without using it in an asynchronous query.  This would avoid the more costly and verbose recommended alternative to use .FirstAsync&amp;#40;&amp;#41;.Wait&amp;#40;&amp;#41; as of Rx 2.0.&lt;br /&gt;&lt;br /&gt;Open discussion&amp;#58; &lt;br /&gt;http&amp;#58;&amp;#47;&amp;#47;social.msdn.microsoft.com&amp;#47;Forums&amp;#47;en-US&amp;#47;rx&amp;#47;thread&amp;#47;7b5b6982-4d03-4d44-a450-efebd5b2102a&amp;#47;&lt;br /&gt;Comments: Pull request&amp;#58; &amp;#10;https&amp;#58;&amp;#47;&amp;#47;rx.codeplex.com&amp;#47;SourceControl&amp;#47;network&amp;#47;forks&amp;#47;davedev&amp;#47;RxBehaviorSubjectValue&amp;#47;contribution&amp;#47;4602</description><author>davedev</author><pubDate>Tue, 30 Apr 2013 14:18:44 GMT</pubDate><guid isPermaLink="false">Commented Issue: BehaviorSubject&lt;T&gt;.Current Property [8] 20130430021844P</guid></item><item><title>Commented Unassigned: Optimise ReplaySubject for specific cases [35]</title><link>http://rx.codeplex.com/workitem/35</link><description>Currently the ReplaySubject is a very versatile class that can perform 5 major use cases&lt;br /&gt;1. Replay-One. Caching and replaying the last value.&lt;br /&gt;2. Replay-Many. &amp;#40;i.e. a value &amp;#62; 1&amp;#41;&lt;br /&gt;3. Replay-Period. Cache data for a period of time for late subscribers&lt;br /&gt;4. Replay by count and time. A combination of caching by count and period.&lt;br /&gt;5. Replay-All. Cache and replay all values.&lt;br /&gt;&lt;br /&gt;It seems to me that the most common usage&amp;#42; of Replay, &amp;#34;Replay&amp;#40;1&amp;#41;&amp;#34; incurs the cost of all the Scheduling and Buffering of the other implementations &amp;#40;Stopwatches, Queues, ImmutableLists of ScheduledObservers and the relevant checks&amp;#41;.&lt;br /&gt;&lt;br /&gt;My proposal is this&amp;#58; as the _bufferSize_ and _window_ are readonly values of a ReplaySubject, a specialization of the inner workings of the ReplaySubject can be loaded at construction time. For example if the new Replay&amp;#40;1&amp;#41; constructor was called then an internal implementation could be resolved that was specific and optimized for the behavior required by a Replay-one subject &amp;#58;&lt;br /&gt;&amp;#42; Use ImmutableList&amp;#60;IObserver&amp;#60;T&amp;#62;&amp;#62; instead of ImmutableList&amp;#60;SchduedledObserver&amp;#60;T&amp;#62;&amp;#62;, &lt;br /&gt;&amp;#42; no StopWatch, &lt;br /&gt;&amp;#42; no internal Queue of cached values &lt;br /&gt;&amp;#42; no Time and queue depth checks on every OnNext&lt;br /&gt;&lt;br /&gt;For Replay&amp;#40;n&amp;#41; where n&amp;#62;1, then an implementation with an intenal queue could be used. Still this implementation would have no need for the ImmutableList&amp;#60;SchduedledObserver&amp;#60;T&amp;#62;&amp;#62;, StopWatch and the time checks on the OnNext call.&lt;br /&gt;&lt;br /&gt;The two constructors that take a Window and a bufferSize&amp;#43;Window, could share an internal implemenation as I doubt there would be much perf difference between the two.&lt;br /&gt;&lt;br /&gt;Finally the Reply-all behaviour where the parameterless constructor is used, could use the Replay-Many implementation passing Int.Max as a param, but this would still needlessly be calling the Trim method for each OnNext, so again is a candidate for specialization.&lt;br /&gt;&lt;br /&gt;&amp;#42;In my opinion Replay&amp;#40;1&amp;#41; would be the most used operation of the ReplaySubject or the associated Replay extension method.&lt;br /&gt;Comments: The short answer is &amp;#34;Yes, we are seeing perf issues&amp;#34;. We switched out a quick modification of the ReplaySubject and noticed a large change in the number of allocations being made. &amp;#10;In ReplaySubject the root of the allocations seems to come from&amp;#10;    private ImmutableList&amp;#60;ScheduledObserver&amp;#60;T&amp;#62;&amp;#62; _observers&amp;#59;&amp;#10;Which in turn ScheduledObserver&amp;#60;T&amp;#62; has&amp;#10;    private readonly ConcurrentQueue&amp;#60;T&amp;#62; _queue &amp;#61; new ConcurrentQueue&amp;#60;T&amp;#62;&amp;#40;&amp;#41;&amp;#59;&amp;#10;which is excessively allocating arrays. I say excessively, but really I mean redundantly as we have no scheduling requirements, so dont need to cost of the ScheduledObserver&amp;#60;T&amp;#62;.&amp;#10;&amp;#10;I will try to create a test pack to reproduce our findings.&amp;#10;&amp;#10;w.r.t your proposed solution, thanks for the thought. However, I see this as a work around&amp;#47;hack where perhaps a far better implementation can be provided. I imagine as Rx gains in popularity &amp;#40;which it certainly seems to be doing&amp;#41;, there will be an expectation that it performs optimally. &amp;#10;&amp;#10;I have seen that Rx has gathered quite a ground swell in the Capital Markets&amp;#47;Investment Banking industry where often data is provided at a pretty quick rate &amp;#40;100s of values per second&amp;#41;. With a high tick rate and unnecessary allocations happening Garbage Collection can have an impact on performance. Essentially, I don&amp;#39;t think that new users should have to learn a hack to get assumed performance, when the library could be optimized.&amp;#10;&amp;#10;Having said this, I have taken a fork of the repo and am working on a proposed fix. I am not expecting someone else to do this for me, but thought I would raise an &amp;#34;Issue&amp;#34; for it so it can be tracked.&amp;#10;&amp;#10;Lee</description><author>LeeCampbell</author><pubDate>Wed, 17 Apr 2013 21:46:42 GMT</pubDate><guid isPermaLink="false">Commented Unassigned: Optimise ReplaySubject for specific cases [35] 20130417094642P</guid></item><item><title>Commented Unassigned: Optimise ReplaySubject for specific cases [35]</title><link>http://rx.codeplex.com/workitem/35</link><description>Currently the ReplaySubject is a very versatile class that can perform 5 major use cases&lt;br /&gt;1. Replay-One. Caching and replaying the last value.&lt;br /&gt;2. Replay-Many. &amp;#40;i.e. a value &amp;#62; 1&amp;#41;&lt;br /&gt;3. Replay-Period. Cache data for a period of time for late subscribers&lt;br /&gt;4. Replay by count and time. A combination of caching by count and period.&lt;br /&gt;5. Replay-All. Cache and replay all values.&lt;br /&gt;&lt;br /&gt;It seems to me that the most common usage&amp;#42; of Replay, &amp;#34;Replay&amp;#40;1&amp;#41;&amp;#34; incurs the cost of all the Scheduling and Buffering of the other implementations &amp;#40;Stopwatches, Queues, ImmutableLists of ScheduledObservers and the relevant checks&amp;#41;.&lt;br /&gt;&lt;br /&gt;My proposal is this&amp;#58; as the _bufferSize_ and _window_ are readonly values of a ReplaySubject, a specialization of the inner workings of the ReplaySubject can be loaded at construction time. For example if the new Replay&amp;#40;1&amp;#41; constructor was called then an internal implementation could be resolved that was specific and optimized for the behavior required by a Replay-one subject &amp;#58;&lt;br /&gt;&amp;#42; Use ImmutableList&amp;#60;IObserver&amp;#60;T&amp;#62;&amp;#62; instead of ImmutableList&amp;#60;SchduedledObserver&amp;#60;T&amp;#62;&amp;#62;, &lt;br /&gt;&amp;#42; no StopWatch, &lt;br /&gt;&amp;#42; no internal Queue of cached values &lt;br /&gt;&amp;#42; no Time and queue depth checks on every OnNext&lt;br /&gt;&lt;br /&gt;For Replay&amp;#40;n&amp;#41; where n&amp;#62;1, then an implementation with an intenal queue could be used. Still this implementation would have no need for the ImmutableList&amp;#60;SchduedledObserver&amp;#60;T&amp;#62;&amp;#62;, StopWatch and the time checks on the OnNext call.&lt;br /&gt;&lt;br /&gt;The two constructors that take a Window and a bufferSize&amp;#43;Window, could share an internal implemenation as I doubt there would be much perf difference between the two.&lt;br /&gt;&lt;br /&gt;Finally the Reply-all behaviour where the parameterless constructor is used, could use the Replay-Many implementation passing Int.Max as a param, but this would still needlessly be calling the Trim method for each OnNext, so again is a candidate for specialization.&lt;br /&gt;&lt;br /&gt;&amp;#42;In my opinion Replay&amp;#40;1&amp;#41; would be the most used operation of the ReplaySubject or the associated Replay extension method.&lt;br /&gt;Comments: Hi Lee, &amp;#10;&amp;#10;Out of curiosity, are you experiencing real problems with the overhead incurred by the _count_ scenarios or did you simply notice that it&amp;#39;s unnecessary in the implementation&amp;#63;&amp;#10;&amp;#10;Note that you can use &amp;#96;Publish&amp;#40;initial&amp;#41;&amp;#96; instead of &amp;#96;Replay&amp;#40;1&amp;#41;&amp;#96;.  It uses __BehaviorSubject__ internally, which is essentially just a specialization of &amp;#96;ReplaySubject&amp;#40;1&amp;#41;&amp;#96;, perhaps due to its commonality as you&amp;#39;ve mentioned.  If you don&amp;#39;t need the initial value it can be excluded with __Where__, though in some cases you need to use __Select__ also if there is no sensible value to indicate exclusion in a particular domain&amp;#59; e.g., integers can be projected into nullable integers.&amp;#10;&amp;#10;For example&amp;#58; &amp;#10;&amp;#10;&amp;#96;&amp;#96;&amp;#96;c&amp;#35;&amp;#10;IObservable&amp;#60;int&amp;#62; xs &amp;#61; GetObservable&amp;#40;&amp;#41;&amp;#59;&amp;#10;IObservable&amp;#60;int&amp;#63;&amp;#62; ys &amp;#61; xs.Select&amp;#40;x &amp;#61;&amp;#62; new int&amp;#63;&amp;#40;x&amp;#41;&amp;#41;&amp;#59;&amp;#10;IConnectableObservable&amp;#60;int&amp;#63;&amp;#62; p &amp;#61; ys.Publish&amp;#40;initialValue&amp;#58; null&amp;#41;&amp;#59;&amp;#10;IObservable&amp;#60;int&amp;#62; q &amp;#61; from x in p&amp;#10;                     where x.HasValue&amp;#10;                     select x.Value&amp;#59;&amp;#10;q.Subscribe&amp;#40;...&amp;#41;&amp;#59;&amp;#10;...&amp;#10;p.Connect&amp;#40;&amp;#41;&amp;#59;&amp;#10;&amp;#96;&amp;#96;&amp;#96;&amp;#10;&amp;#10;&amp;#92;- Dave</description><author>davedev</author><pubDate>Wed, 17 Apr 2013 20:42:03 GMT</pubDate><guid isPermaLink="false">Commented Unassigned: Optimise ReplaySubject for specific cases [35] 20130417084203P</guid></item><item><title>Created Unassigned: Optimise ReplaySubject for specific cases [35]</title><link>http://rx.codeplex.com/workitem/35</link><description>Currently the ReplaySubject is a very versatile class that can perform 5 major use cases&lt;br /&gt;1. Replay-One. Caching and replaying the last value.&lt;br /&gt;2. Replay-Many. &amp;#40;i.e. a value &amp;#62; 1&amp;#41;&lt;br /&gt;3. Replay-Period. Cache data for a period of time for late subscribers&lt;br /&gt;4. Replay by count and time. A combination of caching by count and period.&lt;br /&gt;5. Replay-All. Cache and replay all values.&lt;br /&gt;&lt;br /&gt;It seems to me that the most common usage&amp;#42; of Replay, &amp;#34;Replay&amp;#40;1&amp;#41;&amp;#34; incurs the cost of all the Scheduling and Buffering of the other implementations &amp;#40;Stopwatches, Queues, ImmutableLists of ScheduledObservers and the relevant checks&amp;#41;.&lt;br /&gt;&lt;br /&gt;My proposal is this&amp;#58; as the _bufferSize_ and _window_ are readonly values of a ReplaySubject, a specialization of the inner workings of the ReplaySubject can be loaded at construction time. For example if the new Replay&amp;#40;1&amp;#41; constructor was called then an internal implementation could be resolved that was specific and optimized for the behavior required by a Replay-one subject &amp;#58;&lt;br /&gt;&amp;#42; Use ImmutableList&amp;#60;IObserver&amp;#60;T&amp;#62;&amp;#62; instead of ImmutableList&amp;#60;SchduedledObserver&amp;#60;T&amp;#62;&amp;#62;, &lt;br /&gt;&amp;#42; no StopWatch, &lt;br /&gt;&amp;#42; no internal Queue of cached values &lt;br /&gt;&amp;#42; no Time and queue depth checks on every OnNext&lt;br /&gt;&lt;br /&gt;For Replay&amp;#40;n&amp;#41; where n&amp;#62;1, then an implementation with an intenal queue could be used. Still this implementation would have no need for the ImmutableList&amp;#60;SchduedledObserver&amp;#60;T&amp;#62;&amp;#62;, StopWatch and the time checks on the OnNext call.&lt;br /&gt;&lt;br /&gt;The two constructors that take a Window and a bufferSize&amp;#43;Window, could share an internal implemenation as I doubt there would be much perf difference between the two.&lt;br /&gt;&lt;br /&gt;Finally the Reply-all behaviour where the parameterless constructor is used, could use the Replay-Many implementation passing Int.Max as a param, but this would still needlessly be calling the Trim method for each OnNext, so again is a candidate for specialization.&lt;br /&gt;&lt;br /&gt;&amp;#42;In my opinion Replay&amp;#40;1&amp;#41; would be the most used operation of the ReplaySubject or the associated Replay extension method.&lt;br /&gt;</description><author>LeeCampbell</author><pubDate>Wed, 17 Apr 2013 16:38:17 GMT</pubDate><guid isPermaLink="false">Created Unassigned: Optimise ReplaySubject for specific cases [35] 20130417043817P</guid></item><item><title>Commented Unassigned: Rx.Net: Add Silverlight 5 support for portable library [34]</title><link>http://rx.codeplex.com/workitem/34</link><description>Silverlight 5 should support all &amp;#40;or almost all&amp;#41; of the portable library API, please add it to the list of supported platforms for the portable library.&lt;br /&gt;&lt;br /&gt;By not supporting Silverlight 5 you prevent everyone else from building portable libraries compatible with SL5 from using Rx. If you wan&amp;#39;t async support just utilize the microsoft.bcl.async package since it add async support&lt;br /&gt;Comments: I&amp;#39;ve looked a bit at the code and I hope t can be solved quite easily by following the following steps. &amp;#10;But it would require a new version of all platforms. &amp;#10;&amp;#10;1&amp;#59; We need 2 different portable libraries, the current one plus one which is &amp;#34;more portable&amp;#34; &amp;#40;target platforms where IObservable&amp;#41; does not exist. This second portable library would then include the implementation of the IObservable interfaces. &amp;#10;BTW&amp;#58; I think it would be a good idea to utilize the Microsoft.Bcl.Async package in order to add task and async support to nearly all platforms.&amp;#10;&amp;#10;2&amp;#59; Add TypeForwardedToAttribute&amp;#39;s in order to forward the IObservable interfaces to all builds which does not define the NO_RXINTERFACES &amp;#40;like the current portable library&amp;#41;. In this way allassemblies compiled against the &amp;#34;more portable&amp;#34; will work with the current portable assembly as well as all current platforms assemblies.&amp;#10;&amp;#10;You can then choose any of the libraries to compile against with the new portable library allowing us to build portable libraries which target more platforms.&amp;#10;</description><author>danneesset</author><pubDate>Sat, 13 Apr 2013 19:48:15 GMT</pubDate><guid isPermaLink="false">Commented Unassigned: Rx.Net: Add Silverlight 5 support for portable library [34] 20130413074815P</guid></item><item><title>Created Unassigned: Rx.Net: Add Silverlight 5 support for portable library [34]</title><link>http://rx.codeplex.com/workitem/34</link><description>Silverlight 5 should support all &amp;#40;or almost all&amp;#41; of the portable library API, please add it to the list of supported platforms for the portable library.&lt;br /&gt;&lt;br /&gt;By not supporting Silverlight 5 you prevent everyone else from building portable libraries compatible with SL5 from using Rx. If you wan&amp;#39;t async support just utilize the microsoft.bcl.async package since it add async support&lt;br /&gt;</description><author>Daniel_Svensson</author><pubDate>Thu, 11 Apr 2013 10:11:42 GMT</pubDate><guid isPermaLink="false">Created Unassigned: Rx.Net: Add Silverlight 5 support for portable library [34] 20130411101142A</guid></item><item><title>Created Feature: RxC++ : Implement Timestamp [33]</title><link>http://rx.codeplex.com/workitem/33</link><description>Implement Timestamp operator&lt;br /&gt;</description><author>kirkshoop</author><pubDate>Sat, 30 Mar 2013 18:07:35 GMT</pubDate><guid isPermaLink="false">Created Feature: RxC++ : Implement Timestamp [33] 20130330060735P</guid></item><item><title>Created Feature: RxC++ : Implement Timeout [32]</title><link>http://rx.codeplex.com/workitem/32</link><description>Implement Timeout operator&lt;br /&gt;</description><author>kirkshoop</author><pubDate>Sat, 30 Mar 2013 18:06:56 GMT</pubDate><guid isPermaLink="false">Created Feature: RxC++ : Implement Timeout [32] 20130330060656P</guid></item></channel></rss>