【发布时间】:2011-08-09 18:59:06
【问题描述】:
我正在使用带有 CLI 的 Visual C++ 2008。我有一个带有文本框和按钮的表单,一旦我按下按钮,我希望以下代码输出如下:
private:
System::Void button_Click(System::Object^ sender, System::EventArgs^ e) {
Thread ^thr1 = gcnew Thread(gcnew ThreadStart(&Form1::calculate("t1")));
Thread ^thr2 = gcnew Thread(gcnew ThreadStart(&Form1::calculate("t2")));
thr1->Start();
thr2->Start();
}
void calculate(String^ val) {
int j;
for(j=0; j<10; j++)
_txt->AppendText(val + Convert::ToString(j) + "\n");
}
期望的输出:
t1 0
t2 0
t1 1
t2 1
等等……
我上面的代码不起作用。说明我代表需要在 gcnew Thead 行有两个输入。我究竟做错了什么?还有没有更好的方法来实现这一点?
【问题讨论】:
-
完全改变你的问题是不合适的。如有必要,开始一个新的。
-
@Brian:即使问题可能已经改变,你的回答仍然是正确的。
-
@Ben:是的...我没注意到
_txt->AppendText还在那里。 -
@Brian:我看到汉斯把它放回到原来的问题上。但是更新有
_txt->Text = ...,这也违反了.NET对其他线程的GUI访问的限制。
标签: multithreading visual-c++ c++-cli