C# 访问GUI和占用大量时间的方法

C# 访问GUI和占用大量时间的方法,c#,multithreading,user-interface,ms-access,.net-4.0,C#,Multithreading,User Interface,Ms Access,.net 4.0,这是一个Windows窗体应用程序 代码类型: public bool Simulation(string param1, bool param2) { //code1 do { bool success = reader.Launch(); //code2 } while (!success); } L

这是一个Windows窗体应用程序

代码类型:

public bool Simulation(string param1, bool param2)
        {
            //code1
            do
            {
                bool success = reader.Launch();
                //code2
            } while (!success);
        }
Launch()
方法需要很长时间,但我必须在这里等待(“
code2
”),同时访问GUI。现在
Launch()
正在阻止此访问


我怎样才能做到这一点?

要准确理解您需要什么有点困难,但听起来您希望在UI线程之外的单独线程上运行整个模拟方法。如果是这样,您可以这样做:

// From UI thread e.g. button click event handler
bool result; 

Task t = Task.Factory.StartNew(() => 
    {
        result = Simulation(p1, p2);
    });

请注意,结果将从第二个线程填充。。。问题不清楚您是否需要访问结果,或者从哪个线程访问。如果您能澄清这一点,我可以就如何/在何处检查结果给出更具体的指导。

Simulation()中需要“success”(成功),因此,如果我在另一个线程中启动,它应该在主线程中可用。换句话说,while循环中需要“成功”,所以它必须等待额外的启动结果。这更容易理解吗?(对不起我的英语)@Saint:我知道你需要模拟中的
成功
,这将与我发布的代码一起工作。我的问题是您是否/如何需要从
模拟返回的布尔值。