0

所以这里是设置。

点击按钮

private void login_Click(object sender, RoutedEventArgs e)

我拨打网络电话

 classes.WebDataAccess.Login(uname.Text, pword.Password);

然后启动一个 DispatcherTimer

            timer.Interval = new TimeSpan(100);
            timer.Start();

然后它检查网络调用是否在其滴答声中返回任何内容

 void timer_Tick(object sender, EventArgs e)
        {
            if (classes.WebDataAccess.LoginBag.propBag.Count > 1)
            {
             ...

这一切都很顺利。除了愚蠢的 Windows Phone 认证要求你有一个取消按钮。所以我添加了一个取消按钮,用户界面被锁定......你不能点击它。

我试过把所有这些都放在一个委托中

我试过把它全部放在 Dispatch.BeginInvoke 线程中

我尝试async使用tick方法。

我什至试图摆脱我的辐射控制!

Nada,什么都没有……由于某种原因,UI 被锁定了。

我需要快速修复

4

1 回答 1

0

答案是使用 BackgroundWorker

这是我想出的黑客

BackgroundWorker bw = new BackgroundWoker();

 private void login_Click(object sender, RoutedEventArgs e)
        {
             bw.DoWork += (sender3,args3) => { 
                timer.Tick += (sender2, args) => {
                    if (classes.WebDataAccess.LoginBag.propBag.Count > 1)
                    {
                    ....

这可以防止计时器锁定 UI。

于 2013-08-14T00:53:33.310 回答