0

在 VS 2010 中,我试图在单击按钮时读取文本文件并将该值设置为状态按钮值。文本文件将始终包含一个数字介于 0 和 100 之间的单行。我正在尝试在 C++/CLI 中执行此操作,因为我熟悉 C++,但这似乎是一个完全不同的语言!这就是我所拥有的,但它会导致 GUI 崩溃。我知道这是循环错误,但我不知道为什么,解决这个问题的最佳(菜鸟)方法是什么?

    while (result<100)
    {
            StreamReader ^read=gcnew StreamReader("Status.txt");                    
            String ^x=read->ReadLine();
            read->Close();
            Int32::TryParse(x, result);
            progressBar1->Value= result;    
    }
4

1 回答 1

0

你还没有说你是使用 WPF 还是 WinForms 作为你的 GUI,但这个答案同样适用于任何一个。

如果您的 while 在按钮处理程序中循环,则该代码正在 UI 线程上运行。UI 线程还负责重绘 GUI。由于您的按钮方法没有返回,因此它永远不会进入“重绘”代码,并且 UI 只是停止。

您没有提到将这些整数 0 到 100 写入文件的原因。如果它是同一应用程序中的另一个线程,则有更好的方法来在线程之间传达进度。

我建议您用某种Timer对象替换该 while 循环。(有适当的类,取决于您使用的是 WPF 还是 WinForms。)将间隔设置为 500 毫秒,在后台任务开始时启动计时器,并在结束时停止计时器。在 timer 方法中,不要有 while 循环,只做一次。

于 2012-09-08T04:45:28.803 回答