最近、バグのような気がします。 = Pシンプルなrxコードは、ビジュアルスタジオ2010のデバッグ中にのみ、Windowsフォームでサイレントに失敗します。
私はついに今日少し時間をかけて、少しRxを探索しました。
相続人は私がやったこと:
ここでコードを実行している唯一の作品です。今
private void button1_Click(object sender, EventArgs e)
{
var txtc = Observable.FromEvent<EventArgs>(textBox1, "TextChanged")
.Throttle(TimeSpan.FromSeconds(0.5))
.SubscribeOnDispatcher();//**also tried .SubscribeOn(this)
var t = from x in txtc select textBox1.Text;
t.Subscribe(x => listBox1.Items.Add(x));
}
、デバッグ(F5)を実行したときに、私はすべての良い、ボタンをクリックして、私は何か入力してください。フォームはただ静かに死ぬ!
デバッグなしで実行すると、アプリケーションは完璧に実行されます。
注:私はWin7x64にそのイベントに例外に壊していないVSであるため、既知のバグのForm.Loadイベントからコードを削除(とはい私のマシンのthats)
これは何ですか
'vshost.NotifyLoad'(0x1438)はコード0(0x0の)で終了したスレッド:デバッグ出力は次のようになります。
スレッド 'vshost.LoadReference'(0x155c)がコード0(0x0)で終了しました。
'RxWinForms.vshost.exe'(Managed(v4.0.30319)):ロードされた '\ RxWinForms \ bin \ Debug \ RxWinForms.exe'、シンボルがロードされました。
'System.InvalidOperationException' 種類の最初のチャンス例外のSystem.Windows.Forms.dll
で発生したプログラム '[5228] RxWinForms.vshost.exe:管理(v4.0.30319)は' で終了しましたコード0(0x0)。
プログラム '[5228] RxWinForms.vshost.exe:プログラムトレース'がコード0(0x0)で終了しました。あなたはUIを試してみて、変更前の
+ 1優れている、私は問題を打つと思った!私に言う、 'SubscribeOnDispatcher()'は何ですか?多くの例が 'SubscribeOnDispatcher()'を使用しているので、ちょっと迷惑なようです。 – gideon
@giddyおそらく、観察可能なソース(IObservableを実装しているもの)がSubscribe()呼び出し中にブロックする場合は、SubscribeOnを使用して、そうでないことを確認できます。 –
ありがとう=)私は... SubscribeOnDispatcher()は本当に何をしていますか?私は 'SubscribeOnDispatcher()'と 'SubscribeOn'の両方を呼び出しますか、部分的に間違ったオリジナルのコードですか? – gideon