Backgroundworker を使用して MONO でアプリケーションを構築しようとしています。シーケンシャル メソッドを使用すると、アプリケーションが正常に動作します。基本的に、私のアプリケーションは、ボタンをクリックすると、描画領域にいくつかの長方形を描画します。
Backgroundworker などを使用して、シーケンシャル間の実行時間の違いを比較しようとしています。
バックグラウンド ワーカーの使用に問題があります。次のコードを見てください。
static void DoWork (object sender, DoWorkEventArgs e)
{
Context ct = (Context)e.Argument;
house.DrawHouse rect = new house.DrawHouse ();
PointD p1, p2, p3, p4;
p1 = new PointD (55, 250);
p2 = new PointD (65, 250);
p3 = new PointD (65, 90);
p4 = new PointD (55, 90);
Gtk.Application.Invoke (delegate {
ct.MoveTo (p1);
ct.LineTo (p2);
ct.LineTo (p3);
ct.LineTo (p4);
ct.LineTo (p1);
ct.ClosePath ();
ct.Color = new Color (0, 0, 0);
ct.FillPreserve ();
ct.Color = new Color (255, 255, 255);
ct.Stroke ();
});
}
}
上記のコードでは、ワーカー スレッドが長方形を作成し、GUI スレッドにそれを出力させます。しかし、 ct.MoveTo (p1);でエラーをスローしています。
すぐに誰かから連絡が来ることを願っています。