C# 是否消息框在工作线程中出现得太早

C# 是否消息框在工作线程中出现得太早,c#,dialog,messagebox,C#,Dialog,Messagebox,我的程序需要向用户显示一个对话框,提示用户选择保存文件夹,然后显示一个是否按钮消息框,要求用户确认他们希望继续 这是我的代码: /* Wait until user has selected a save folder */ do { } while (sSaveFolder == null); /* Cancel operation if user clicks on cancel when in folder selection window */ if (sSaveFolder == "

我的程序需要向用户显示一个对话框,提示用户选择保存文件夹,然后显示一个是否按钮消息框,要求用户确认他们希望继续

这是我的代码:

/* Wait until user has selected a save folder */
do { } while (sSaveFolder == null);

/* Cancel operation if user clicks on cancel when in folder selection window */
if (sSaveFolder == "<cancel>")
{
    worker.ReportProgress(0, "Operation Cancelled\r\n\r\n**********\r\n");
    return;
}

/* Check for confirmation */
if (MessageBox.Show("Please confirm whether or not to continue.", "Do you wish to continue?", MessageBoxButtons.YesNo) == DialogResult.No)
{
    worker.ReportProgress(0, "Operation Cancelled\r\n\r\n**********\r\n");
    return;
}
/*等待用户选择保存文件夹*/
do{}while(sSaveFolder==null);
/*如果用户在文件夹选择窗口中单击“取消”,则取消操作*/
如果(sSaveFolder==“”)
{
worker.ReportProgress(0,“操作已取消\r\n\r\n*********\r\n”);
返回;
}
/*核实*/
如果(MessageBox.Show(“请确认是否继续。”,“是否继续?”,MessageBoxButtons.YesNo)=DialogResult.No)
{
worker.ReportProgress(0,“操作已取消\r\n\r\n*********\r\n”);
返回;
}
我遇到的问题是,我可以运行一次,单击“否”,工作线程终止。但是,如果我点击按钮再次运行工作线程,我会在保存文件夹对话框的同时弹出一个消息框,这显然是有问题的。那么,有人知道为什么会发生这种情况以及如何解决它吗

通过将消息框移动到“保存文件夹”对话框之前,我找到了解决特定问题的方法。但是,由于这是一个奇怪的问题,我想我会在将来再次询问它


提前感谢:)

在您的代码中,我看不到任何地方会重置sSaveFolder的值

由于您正在重用同一对象,因此可能仍会设置上一个值,因此do…while会很快完成,因此会显示messagebox


在显示对话框之前重置sSaveFolder的值应该可以解决您的问题。

我看不到代码中任何地方会重置sSaveFolder的值

由于您正在重用同一对象,因此可能仍会设置上一个值,因此do…while会很快完成,因此会显示messagebox


在显示对话框之前重置sSaveFolder的值可以解决您的问题。

是否在任何位置重置sSaveFolder的值?如果没有,你应该做什么?啊-可能就是这样。我只是测试一下。你可能想在
do…的上方重置它,而
循环。是的,我就是在那里做的。谢谢。你为什么有“边做边做”的循环?如果您使用的是FolderBrowserDialog,则不需要它,它是一个模式对话框。是否在任何位置重置SSAVEFOLLER的值?如果没有,你应该做什么?啊-可能就是这样。我只是测试一下。你可能想在
do…的上方重置它,而
循环。是的,我就是在那里做的。谢谢。你为什么有“边做边做”的循环?如果您使用的是FolderBrowserDialog,则不需要它,它是一个模式对话框。是的,这就是问题所在。我已经修好了,程序正在运行。非常感谢:)我会在stackoverflow允许的9分钟内接受这个答案:)没问题,很高兴我能帮忙。是的,这就是问题所在。我已经修好了,程序正在运行。非常感谢:)如果stackoverflow允许,我会在9分钟内接受这个答案:)没问题,很高兴我能帮忙。