我有(希望)一个简单的问题。我有一个函数在隐藏窗口中运行命令提示符命令,并以字符串形式返回响应。这个过程大约需要3秒钟。我想在我的GUI中添加一个简单的标签,该标签会在函数执行之前出现。该标签只是指出正在检查某些内容,因此用户不认为该界面太慢或无响应。C#在执行阻塞过程之前执行GUI的代码
这里是一个示例片段来说明。
svnPathCheck_lbl.Visible = true; //Show the label
// Check validity of SVN Path
string svnValidity = getCMDOutput("svn info " + SVNPath_txtbox.Text);
// Here we call Regex.Match. If there is a 'Revision:' string, it was successful
Match match = Regex.Match(svnValidity, @"Revision:\s+([0-9]+)", RegexOptions.IgnoreCase);
svnPathCheck_lbl.Visible = false; //Hide the label
getCMDOutput()
函数运行隐藏命令并阻止GUI。
我希望这样做是显示我的标签“检查...”,然后运行阻止功能getCMDOutput()
。一旦函数返回并且GUI再次响应,它将隐藏标签。
相反,我从来没有看到标签出现。它几乎像它从未执行过。是否可以在GUI有机会更新之前执行阻塞函数?
感谢您的帮助!
可能跨线程错误在这里。如果'Task'在非UI线程上执行,那么它不能直接调用'SVNPath_txtbox.Text'。 – groverboy