在MVP模式中输入异步功能时,GUI项目停止工作

时间:2015-08-11 17:02:46

标签: c# design-patterns asynchronous mvp

我正在使用C#和Visual Studio 2013.我已经阅读了设计模式,而且我目前正在使用MVP设计模式。

我的问题是我在鼠标上启动等待光标,我想要它做的是进入Aysnc函数并执行耗时的操作,但保持等待光标,直到耗时的操作完成以确保人们该程序仍在运行。在MVP模式之外,我之前已经完成了这一过程,整个过程正常运行。 1.启动等待光标,2。启动长功能,3。长功能完成,4。将光标恢复为默认值。但是,当我从调试器中告诉我的演示者到我的模型时,等待光标会在Async函数开始时立即更改回默认光标。

我已经完成了各种测试,看看这是否会影响所有GUI组件。它也会影响选取框进度条,但如果我在Async调用后有一个消息框,它将在任务完成后激活消息框。

在光标变成等待光标和任务开始之间发生了什么?我环顾四周,我不认为其他任何人从我所知道的那里经历过这个问题......

ex code :(请原谅从内存中写这个,所以语法可能更接近伪代码)

//View
//start wait cursor
public void StartWaitCursor()
{
    Cursor.Current = Cursors.WaitCursor;
}
//stop wait cursor
public void StopWaitCursor()
{    
    Cursor.Current = Cursors.Default;
}

//Presenter
TheView.StartWaitCursor();//For some reason this goes to default cursor before task is finished
await Task_MethodAsync();
TheView.StopWaitCursor();

1 个答案:

答案 0 :(得分:0)

很难从您提供的伪代码中确定任何内容。 在this文章中,您在其中调用Task_MethodAsync();的方法必须位于Presenter中的异步方法中。我可能错了。

除此之外,我开始调试并对光标进行监视,并查看每个步骤如何/何时更改。