触摸设备上的WPF任务无法正确返回到UI线程

时间:2013-07-25 11:07:37

标签: c# wpf touch task ui-thread

我有一个WPF应用程序,其中包含一些后台任务,可以在我的笔记本电脑上完美运行,但在使用Windows 7的平板电脑上运行效果不佳。

单击屏幕,在完成某些后台作业时显示加载图像,并在作业结束时显示包含某些信息的对话框。您按对话框上的按钮并返回主屏幕。

在显示对话框的最后一个平板电脑中,您必须按一次屏幕才能使GUI“激活”,然后再次向应用程序检测点击。就像ui线程在后台任务后被“禁用”并需要屏幕再次触摸才能激活。这非常烦人,因为用户必须多次按下按钮才能执行操作。此行为仅发生在平板电脑上,而不是笔记本电脑上......

以下是代码:

public void processTouch(Point p)
{
  Task getPendingDocsTask = Task.Factory.StartNew(GetPendingDocs, CancellationToken.None,     TaskCreationOptions.None, TaskScheduler.Default);
  Task afterGetPentingDocsTask = getPendingDocsTask.ContinueWith(w => AfterGetPendingDocs(), TaskScheduler.FromCurrentSynchronizationContext());  
}

private void GetPendingDocs()
{
    Thread.Sleep(500);            
}

private void AfterGetPendingDocs()
{            
     mainprogresscircle.Visibility = System.Windows.Visibility.Hidden;
     this.Background = (Brush)bc.ConvertFrom("#013857");
     WindowDialog aDialog = new WindowDialog(this);
     aDialog.ShowDialog();           
}

在对话框中,点击时的功能是:

private void Button_Click(object sender, RoutedEventArgs e)
{            
   this.Close();          
}

对话框中按钮的XAML

<s:SurfaceButton                          
                    Margin="-4"
                    BorderBrush="Transparent"
                    BorderThickness="0"                                
                    Width="200"
                    Height="75"                        
                    HorizontalAlignment="Center"                    
                    Name="OpenButton" 
                    HorizontalContentAlignment="Center"
                    VerticalContentAlignment="Center"
                    FontFamily="Tahoma"
                    FontSize="20"
                    Content="Aceptar" 
                    Background="#78B41E" 
                    Foreground="White"
                    Click="Button_Click"  
                    IsManipulationEnabled="True"
                    />

我也尝试过使用BackgroundWorker和调度程序,行为是一样的。在普通计算机上完美运行,但在Windows 7触摸设备上无法正常响应。

任何线索都会非常受欢迎。

提前致谢, 伊凡。

0 个答案:

没有答案