C ++ / CLI中的Visual Studio 2010状态栏

时间:2012-09-07 15:56:39

标签: visual-studio-2010 loops c++-cli

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

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

1 个答案:

答案 0 :(得分:0)

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

如果你的while循环在一个按钮处理程序中,那么该代码在UI线程上运行。 UI线程还负责重绘GUI。由于你的按钮方法没有返回,它永远不会进入'重绘'代码,UI就会停止。

你没有提到将这些整数0到100写入文件的内容。如果它是同一个应用程序中的另一个线程,那么有很多更好的方法来在线程之间传递进度。

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