1
class1 st = new class1();
string a = addresse.Text;
System.Threading.Thread th1 = new System.Threading.Thread(new System.Threading.ThreadStart(st.start));
th1.Start();

これは私たちが持っているクラスです

class class1
{
    public void start(string m)
    {
        System.Diagnostics.Process.Start(m);
    }
}

注:ユーザー、実行中のファイルのアドレスを入力し、アドレスを取得してファイルを実行するために配置したクラスでスレッドを使用してファイルを実行します

問題は、スレッドがテキストボックスからのアドレスを受け入れないことです。

私は何をすべきか?

4

4 に答える 4

2
class1 st = new class1();
System.Threading.Thread th1 = new System.Threading.Thread(new System.Threading.ParameterizedThreadStart(st.start));
th1.Start(textBox1.Text);

class class1
{
    public void start(object o)
    {
        string m = (string)o;
        System.Diagnostics.Process.Start(m);
    }
}

または単に

new Thread(() => new class1().start(textBox1.Text)).Start();
于 2013-01-01T17:37:58.880 に答える
1

テキストを渡す前に、テキストを変数に保存する必要があります。しかし、なぜそれを複雑にするのですか?

     ThreadPool.QueueUserWorkItem(delegate
     {
        System.Diagnostics.Process.Start(addresse.Text);
     });
于 2013-01-01T17:37:40.003 に答える
0

ほぼそこに

次のように変更します。

public void start(object m)
{
    System.Diagnostics.Process.Start((string) m);
}
于 2013-01-01T17:36:08.217 に答える
0

a が Textbox の場合、次のコードを使用できます。

delegate string GetFilePath();

string getFilePath()
{

    if (a.InvokeRequired)
    {
        Invoke(new GetFilePath(getFilePath), null);
    }
    else
    {
        return a.Text;
    }
} 

異なるスレッドを介した安全なアクセスのためにデリゲートを使用する

于 2013-01-01T20:58:27.910 に答える