在当前具有高CPU使用率的计算机上运行任何WPF应用程序,如果您同时插入和拔出USB HID平板电脑设备,WPF应用程序将停止响应触摸并仅响应鼠标.
要求:
我的问题:
我们非Microsoft开发人员是否有任何彻底的方法来解决此触摸故障?
我在这里发布了触摸失败的初步分析:
这篇文章对StackOverflow来说有点长,所以我在这里只提到一些结论:
GetPenEventMultiple下面发布的帖子可能存在僵局.GetTabletInfoHelper.下面的代码来自.NET Framework,我简化了它们以便于理解:
// PenThreadWorker.ThreadProc
while(There are two loops in real)
{
// The `break` below only exit one loop, not two.
if (this._handles.Length == 1)
{
if (!GetPenEvent(this._handles[0], otherArgs))
{
break;
}
}
else if (!GetPenEventMultiple(this._handles, otherArgs))
{
break;
}
// Other logics.
}
// WorkerOperationGetTabletsInfo.OnDoWork
try
{
_tabletDeviceInfo = PenThreadWorker.GetTabletInfoHelper(pimcTablet);
}
catch(COMException)
{
_tabletDevicesInfo = new TabletDeviceInfo[0];
}
catch(ArgumentException) …Run Code Online (Sandbox Code Playgroud) 我有一个Visual Studio项目,它是作为NuGet lib包构建的.但每次我发布包时,我都必须手动更改版本号.这是一个容易出错的工作.我想自动生成并增加包版本号.
我找到了GitVersion工具来解决这个问题.我还发现了一些语义版本博客来解释持续交付的包版本.
但不幸的是,GitVersion包对我来说无法正常工作.
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>到csproj文件中,它将不执行任何操作,包版本将为0.0.0.0.也许原因是我正在使用新的csproj格式.看到这里查看csproj文件,文件如下所示:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>net45;net47;netstandard2.0</TargetFrameworks>
</PropertyGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)
任何回复表示赞赏.
更新:
我发现有一个问题需要提一下我的问题:VS2017式csproj的Gitversion任务·问题#1349·GitTools/GitVersion.我正在尝试新的解决方案.
如果我使用一个简单的空窗口创建一个新的WPF应用程序,如下面所示的代码,我发现WPF应用程序覆盖的所有应用程序都失去了触摸或手写笔反应.只有在Windows 10升级到1803(10.0.17134.0)时才能重现此问题.
<Window x:Class="TheWPFCoveringWindow.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
WindowStyle="None" WindowState="Maximized"
AllowsTransparency="True" Background="Transparent"
Topmost="True">
<Button Content="Test" Width="200" Height="100" />
</Window>
Run Code Online (Sandbox Code Playgroud)
我写了另一个WPF应用程序来找出发生了什么.所以我将一个StylusDown事件添加到Window,如下所示的代码:
// This code is in another WPF application.
private void OnStylusDown(object sender, StylusDownEventArgs e)
{
// Set a breakpoint here.
}
Run Code Online (Sandbox Code Playgroud)
但是在我关闭顶部的透明WPF窗口之前,断点从未到达.
我将非常简单的代码推送到GitHub:dotnet-campus/TouchIssueOnWindows10.0.17134.克隆它可能会有所帮助.
为什么会发生这种情况以及如何解决?任何回复表示赞赏.
有一天,我发现我所有的WPF应用程序都无法将其拖动到窗口之外,并且无法使用实时预览来调整任何窗口的大小。
我的问题是为什么会发生这种情况,我该如何解决?
您可以查看下面显示的动画图像:
您会注意到,当我的光标在窗口之外时,调整大小会立即停止,并且当光标第一次离开窗口时,窗口会保持大小。如果光标重新进入窗口区域,则窗口大小调整将恢复。
我不仅编写了所有WPF应用程序,而且还复制了其他WPF应用程序:
非WPF应用程序的行为正确。
因为我的系统版本是Windows 10(1809),而现在我的系统版本是Windows 10(1903),所以几个月前就出现了这种现象。从.NET Framework 3.5 / 4.5 / 4.8和.NET Core 3.0嵌入的WPF应用程序。
Update1:我刚刚清理了所有驱动器,并使用一些核心应用程序重新安装了Windows 10 Professional(1903,客户版本),该问题仍然存在。核心应用程序是Chrome,PalmInput IME和iTunes。
Update2:我已经编写了一个WPF应用程序来处理窗口消息。我发现49757当我调整其外部窗口的大小时,该消息将停止接收。该消息在我朋友的系统上正常运行。