将鼠标悬停在标题栏上时,任务停止更新鼠标

时间:2017-04-15 17:04:09

标签: c# thread-safety task-parallel-library mouse

我有一个简单的Windows窗体应用程序来显示我的鼠标位置它有2个文本框和一个按钮就是全部。请参阅下面的代码。它工作正常,直到我将鼠标悬停在应用程序的标题栏上,但不是整个标题栏。当水平移动时,它似乎是文本和图标之间的一个点。垂直移动鼠标时更难实现。应用程序停止报告鼠标位置无响应。有人可以帮我提一下为什么以及如何解决它?

using System;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace MouseTester
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            _SyncContext = SynchronizationContext.Current;
        }
        private bool Run;
        private SynchronizationContext _SyncContext;
        private void button1_Click(object sender, EventArgs e)
        {
            Run = !Run;
            if (Run)
            {
                DisplayMouseLocation();
            }
        }

        private void DisplayMouseLocation()
        {
            Task.Run(() =>
            {
                while (Run)
                {
                    SendOrPostCallback callback = arg =>
                    {
                        textBox1.Text = MousePosition.X.ToString();
                        textBox2.Text = MousePosition.Y.ToString();
                    };
                    _SyncContext.Send(callback, null);
                }
            });
        }
    }
}

0 个答案:

没有答案