API を介してプッシュされた株価情報を含むプログラムがあります。このプログラムには、XAML で作成されたフロント エンドもあり、このプログラムの実行中はフリーズします (つまり、API が送信する情報を処理します)。Dispatcher.Invoke および/または BackgroundWorker を使用してみましたが、スレッド化について十分に調べましたが、フリーズを解除できません。おそらく、私は何か間違ったことをしているだけです。関連するコードをここに添付しました。誰かが助けてくれることを望んでいました。
private void QuoteUpdate(QuoteInfo info)
{
BackgroundWorker bwQuoteUpdate = new BackgroundWorker();
bwQuoteUpdate = new BackgroundWorker();
bwQuoteUpdate.WorkerSupportsCancellation = true;
bwQuoteUpdate.DoWork += bwQuoteUpdate_DoWork;
bwQuoteUpdate.RunWorkerAsync(info);
}
private void bwQuoteUpdate_DoWork(object sender, DoWorkEventArgs e)
{
try
{
Dispatcher.Invoke(DispatcherPriority.Normal, new ThreadStart(() =>
{
QuoteInfo info = e.Argument as QuoteInfo;
//logical functions and work are here
}));
}
catch (Exception ex)
{
System.Windows.Forms.MessageBox.Show("Error in QuoteUpdate: " + ex.Message, "Exception Thrown");
}
}