当前位置: 代码迷 >> Windows Mobile >> wp8中Canvas的Mouse事件中加入耗时操作,回到的点数为什么变少
  详细解决方案

wp8中Canvas的Mouse事件中加入耗时操作,回到的点数为什么变少

热度:72   发布时间:2016-04-25 07:11:34.0
wp8中Canvas的Mouse事件中加入耗时操作,返回的点数为什么变少?
如题,求问,在Canvas或者Grid上添加对MouseDown、MouseUp、MouseMove事件的响应代码如下:
.....
  <Canvas x:Name="LayoutRoot" Background="Transparent">
.......
 public partial class MainPage : PhoneApplicationPage
    {
  
        // 构造函数
        public MainPage()
        {           
            InitializeComponent();

            LayoutRoot.MouseLeftButtonDown += onGridMouseDown;
            LayoutRoot.MouseMove += onGridMouseMove;
            LayoutRoot.MouseLeftButtonUp += onGridMouseUp;

            // 用于本地化 ApplicationBar 的示例代码
            //BuildLocalizedApplicationBar();
        }
        void onGridMouseDown(object sender, MouseButtonEventArgs e)
        {
            Grid c = sender as Grid;
            Point ppp = e.GetPosition(c);

            Dispatcher.BeginInvoke(() =>
                {
                    long k = 0;
                    while (k < 20000000)
                        k++;
                    System.Diagnostics.Debug.WriteLine("onGridMouseDown -- x = " + ppp.X + " ,y = " + ppp.Y);

                }
                );

        }

        void onGridMouseUp(object sender, MouseButtonEventArgs e)
        {
            Grid c = sender as Grid;
            Point ppp = e.GetPosition(c);

            Dispatcher.BeginInvoke(() =>
                {
                    long k = 0;
                    while (k < 30000000)
                        k++;
                    System.Diagnostics.Debug.WriteLine("onGridMouseUp -- x = " + ppp.X + " , y = " + ppp.Y);

                }
                );
 
        }
        void onGridMouseMove(object sender, MouseEventArgs e)
        {
            Grid c = sender as Grid;
            Point ppp = e.GetPosition(c);

            int x = (int)ppp.X;
            int y = (int)ppp.Y;
         
            Dispatcher.BeginInvoke(() =>
                {
                    long i = 0;
                    while (i < 9000000)
                        i++;