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 是文本框,您可以使用以下代码:

delegate string GetFilePath();

string getFilePath()
{

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

使用委托安全访问不同的线程

于 2013-01-01T20:58:27.910 回答