gpt4 book ai didi

multithreading - Visual C++ (CLI) 线程

转载 作者:行者123 更新时间:2023-12-03 13:21:50 24 4
gpt4 key购买 nike

我正在使用带有 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

ETC...

我上面的代码不起作用。说明我代表需要在 gcnew Thead 行有两个输入。我究竟做错了什么?还有更好的方法来实现这一目标吗?

最佳答案

因为 C++\CLI 对我来说不是一种熟悉的语言,所以我会强调编译错误。但是,我可以提到另一个问题。

您正在尝试从非 UI 线程访问 UI 控件。你不能碰_txt以任何方式从工作线程或除主 UI 线程之外的任何其他线程的形状或形式(甚至只是读取属性)。您可以做的是将委托(delegate)的执行编码回 UI 线程,然后您可以更改 Text置业或调用AppendText .要将委托(delegate)编码到 UI 线程上,请使用 _text->Invoke .

关于multithreading - Visual C++ (CLI) 线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7001454/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com