모두 -실시간 데이터 바인딩
저는 현재 종말을 맞이하는 POC WPF 프로젝트를 가지고 있습니다. 이 응용 프로그램은 라이브러리 (게시자)를 통해 게시되는 실시간 시장 데이터를 시뮬레이트하고 WPF 클라이언트는 구독자 (처리기 메서드 사용)입니다. 사용자 정의 이벤트를 사용하여 데이터를 게시합니다. 내가 가진
질문은 이것이다 :
1) 나는 생산자 소비자를 구현하려는 - 나의 핸들러가 직접 관찰 가능한 컬렉션에 데이터를 가져 오지 않습니다.
2) 제작자/소비자 C# 코드 단편 (http://msdn.microsoft.com/en-us/library/hh228601.aspx)을 구현하는 방법을 정확하게 알고 있지만 이것이 현재 아키텍처에서 어떻게 적용되는지 더 잘 이해하고 싶습니다. 여기에
3) 누군가가 코드 접근 방식으로 나를 도와 줄 수 다이어그램, 링크 등 시장 피드와 나는 몇 가지 프로젝트를 수행 한
public class MainWindow_VM : ViewModelBase
{
#region Properties
public myCommand SbmtCmd { get; set; }
public ObservableCollection<StockModel> stocks { get; set; }
#endregion
#region Fields
private readonly Dispatcher currentDispatcher;
#endregion
public MainWindow_VM()
{
SbmtCmd = new myCommand(mySbmtCmdExecute, myCanSbmtCmdExecute);
currentDispatcher = Dispatcher.CurrentDispatcher;
stocks = new ObservableCollection<StockModel>();
}
private void mySbmtCmdExecute(object parameter)
{
MarketDataProvider p = new MarketDataProvider();
p.OnMarketData += new EventHandler<MarketDataEventArgs>(handlermethod);
p.GenerateMarketData();
}
private bool myCanSbmtCmdExecute(object parameter)
{
return true;
}
// Subscriber method which will be called when the publisher raises an event
private void handlermethod(object sender, MarketDataEventArgs e)
{
foreach (Stock s in e.updatedstk)
{
StockModel sm = new StockModel();
sm.symbol = s.symbol;
sm.bidprice = s.bidprice;
sm.askprice = s.askprice;
sm.lastprice = s.lastprice;
currentDispatcher.Invoke(DispatcherPriority.Normal, (Action)delegate()
{
if (sm != null)
{
if (stocks.Any(x => x.symbol == sm.symbol))
{
var found = stocks.FirstOrDefault(x => x.symbol == sm.symbol);
int i = stocks.IndexOf(found);
stocks[i] = sm;
}
else
{
stocks.Add(sm);
}
}
});
}
}
}
는 http://msdn.microsoft.com/en-us/data/gg577611 – JSJ
감사 Jodha 읽기 - 불행히도 나는 닷넷 3를 사용하여 환경에 제한이 있습니다.5 따라서 전통적인 C# 방식을 사용하여이를 해결해야합니다. – Patrick
그런 다음 DataFlow도 사용할 수 없습니다. Reactive Extensions를 3.5에서 사용할 수있는 반면 .NET 4 이상에서만 사용할 수 있습니다. –