首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在调用web服务时避免使用沙漏鼠标光标?

在调用web服务时避免使用沙漏鼠标光标?
EN

Stack Overflow用户
提问于 2010-06-09 19:29:39
回答 1查看 604关注 0票数 2

我不知道这是一个一般性的web服务问题,还是仅仅是我的特定场景,这是一个带有DispatcherTimer调用web服务方法的WPF应用程序。每当调用计时器时,鼠标光标都会自动变为沙漏光标。

调用的处理非常短,每3秒发生一次,因此用户体验是,每隔3秒鼠标就会以沙漏的形式出现一小段时间,然后返回到正常的光标表示。

我怎样才能避免这种不便?

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-06-09 21:27:04

当计时器触发时,你的整个应用程序是否也没有响应,或者整个过程太快而没有注意到?

我的假设是,您可能会在DispatcherTimer上同步调用代码,这可能会导致短暂的无响应(可能还会导致沙漏)。要解决此问题,请确保Dispatcher的Tick事件为异步代码。

下面是一个简单的小示例,它每隔3秒执行一次伪工作,然后更新GUI:

代码语言:javascript
复制
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();
    }
}

(还有其他方法可以实现相同的目标,这个方法很容易背出来。有关更多信息,请参阅此处的指导:http://msdn.microsoft.com/en-us/magazine/cc163328.aspx)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3005346

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档