wpf - 调用 Web 服务时避免沙漏鼠标光标?

标签 wpf web-services mouse-cursor

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

调用的处理时间非常短,每 3 秒发生一次,因此用户体验是鼠标每 3 秒像沙漏一样闪烁一秒,然后返回到正常的光标表示。

如何避免这种不便?

谢谢。

最佳答案

每当计时器触发时,您的整个应用程序是否也会变得无响应,或者整个过程是否太快而无法注意到?

我的假设是,您可能在 DispatcherTimer 上同步调用代码,这可能会导致短暂的无响应(可能还有沙漏)。要解决此问题,请确保您的调度程序的 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();
    }
}

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

关于wpf - 调用 Web 服务时避免沙漏鼠标光标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3005346/

相关文章:

wpf - 单击鼠标后如何停止 TreeView 折叠事件

.net - 如何在不涉及表示层(即 View 模型)的情况下在 WPF 应用程序中注入(inject)非表示依赖项(如存储库)?

apache-flex - 可选择使用 Flash 10.2 光标,同时仍与 Flash 10.0 兼容?

c# - 在没有窗口的 WPF 应用程序中处理命令

c# - 平板电脑输入面板不会引发TextInput事件?

web-services - 无法通过 https 访问axis2

web-services - 如何在 Swift 中调用网络服务?

web-services - 远程调试 Web 服务时出现问题

c# - 从 C# 应用程序在空闲时隐藏系统范围内的鼠标,在移动时显示

c++ - 外部库 : Get cursor image