Web Services 调用Web服务时是否避免使用沙漏形鼠标光标?

5t7ly7z5  于 2022-11-15  发布在  其他
关注(0)|答案(1)|浏览(171)

我不知道这是一个普通的Web服务问题还是我的特定场景,这是一个WPF应用程序,它带有一个调用Web服务方法的DispatcherTimer。每当调用计时器时,鼠标光标都会自动变为沙漏光标。
调用的处理时间非常短,每3秒发生一次,因此用户体验是,每3秒鼠标就像沙漏一样闪烁一秒,然后返回到正常的光标表示。
如何避免这种不便?

  • 谢谢-谢谢
slhcrj9b

slhcrj9b1#

当计时器触发时,您的整个应用程序是否也没有响应,或者整个过程是否太快而无法注意到?
我的假设是,您可能在DispatcherTimer上同步调用代码,这可能会导致短暂的无响应时间(可能是沙漏时间)。要解决这个问题,请确保Dispatcher的Tick事件是异步代码。
下面是一个简单的小例子,每3秒钟执行一秒钟的假工作,然后更新GUI:

public partial class MainWindow : Window
{
    private static int foo = 0;

    public MainWindow()
    {
        InitializeComponent();

        DispatcherTimer timer = new DispatcherTimer();
        timer.Interval = TimeSpan.FromMilliseconds(3000);
        timer.Tick += new EventHandler(delegate(object o, EventArgs args)
        {
            StatusBox.Text = "Incrementing";

            ThreadStart start = delegate()
            {
                // Simulate work
                Thread.Sleep(1000);

                // Update gui
                this.Dispatcher.BeginInvoke(new Action(delegate
                {
                    CountingBox.Text = (foo++).ToString();
                    StatusBox.Text = "Waiting";
                }));
            };

            new Thread(start).Start();                
        });

        timer.Start();
    }
}

(还有其他方法可以实现同样的目标,这一个简单易懂。更多信息请参见此处的指导:(第10页)

相关问题