DefineObservable
의 Microsoft.ComplexEventProcessing.Application
을 사용하여 생성 된 IQStreamable
개체가 있습니다.StreamInsight : X가 Task.Run() 블록에 전달 된 경우에만 X 유형의 값을 serialize 할 수 없습니다.
코드는 정상적으로 보이지만, 내가 이해할 수없는 것은 Task.Run()
에서 인수가 DefineObservable
으로 전달되었을 때 예외가 발생했습니다.
그러나 속성을 Task.Run()
내부 메소드에 전달하지 않고 직접 사용했을 때 효과적이었습니다.
예외
An unhandled exception of type 'System.InvalidOperationException' occurred in Microsoft.ComplexEventProcessing.Diagnostics.dll
Additional information: Cannot serialize value of type 'System.IObservable'1[ValueObjects.Price]'.
[방법]
private void Monitor(IObservable<Price> priceObservable)
{
const string applicationName = "RealtimeMonitoring";
Microsoft.ComplexEventProcessing.Application application = PriceObserver.Server.CreateApplication(applicationName);
IQStreamable<Price> sStreamable = application
//.DefineObservable<Price>(() => PriceRealtimeProvider.Instance.PriceObservable)
.DefineObservable<Price>(() => PriceObservable)
.ToPointStreamable(=> PointEvent<Price>.CreateInsert(DateTime.Now, price), AdvanceTimeSettings.IncreasingStartTime);
var standingQuery = from p in streamable select price ;
var sink = application.DefineObserver(() => new PriceObserver());
using (standingQuery.Bind(sink).Run())
{
// some code...
}
}
호출 :
Task.Run(()=>Monitor(PriceRealtimeProvider.Instance.PriceObservable)
질문 :합니까 StreamInsight는 관찰자 객체를 serialze
? 그리고 왜?
이 .DefineObservable<Price>(() => PriceObservable)
및
사이의 차이가 무엇
이 DefineObservable<Price>(() => PriceRealtimeProvider.Instance.PriceObservable)
arugument이 문제를 일으키는 사용하는 이유는 무엇입니까?