0

発射物の動きを一時停止/再開するには、スレッドを使用する必要があります。button3_Click発射物の動きが画面上に描画される場合:

public void button3_Click(object sender, EventArgs e)
{
//... Lots of drawingcode...
}

同じものを使用して発射体の動きを一時停止/再開する必要がありますがbutton3_Click、スレッド化に慣れていないため、方法がわかりません。

私が試してみました:

        public partial class Simulation : Form
{
            Thread parallel1;
            Thread parallel2;

            public Simulation()
            {
                InitializeComponent();
                parallel1 = new Thread(new ThreadStart(button3_Click));
            }
}

しかし、エラーが発生します...

No overload for 'button3_Click' matches delegate 'System.Threading.ThreadStart'

1つが一時停止しているときに、もう1つが実行されて、もう1つのスレッドを再開できるように、2つのスレッドが必要だと思いbutton3_Clickます。これはどのように行うことができますか?

4

1 に答える 1

1

メソッドシグネチャについてです。C#では、メソッドはパラメーターと名前で一意です。したがって、このエラーは、パラメーターなしで呼び出すメソッドがないことを示しています。使用できます

new Thread( new ParameterizedThreadStart(...

パラメータを送信できます。通常、送信者はボタンであり、EventArgsパラメーターの「newEventArgs()」を送信できます。

しかし、最良の方法(私はそれを使用します)は、ボタンクリックで複雑なコードを記述しないでください。別のメソッドで複雑なコードを記述し、ボタンクリックで呼び出します。通常、操作は複数回使用されるため、変更を加えずにどこからでもメソッドを呼び出すことができます。操作を行うための新しいメソッドを記述します。メソッドにパラメーターが必要な場合は、parameterizedThreadStartを使用して呼び出すことができます。注:この1つ以上のスレッドがオブジェクトにアクセスするなどのエラーが発生した場合は、スレッドを開始する前にこのプロパティを設定できます。

CheckForIllegalThreadStart=false;

于 2013-02-24T21:37:25.220 に答える