小编wal*_*rlv的帖子

添加或删除平板电脑设备后,WPF应用程序停止响应触摸

在当前具有高CPU使用率的计算机上运行任何WPF应用程序,如果您同时插入和拔出USB HID平板电脑设备,WPF应用程序将停止响应触摸并仅响应鼠标.

要求:

  1. 运行任何WPF应用程序
  2. 继续插拔USB HID平板电脑设备
  3. 提高CPU使用率

我的问题:

我们非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)

.net c# windows wpf .net-4.6.2

22
推荐指数
1
解决办法
693
查看次数

C#/ .NET - 如何自动生成和增加包版本,尤其是通过CI?

我有一个Visual Studio项目,它是作为NuGet lib包构建的.但每次我发布包时,我都必须手动更改版本号.这是一个容易出错的工作.我想自动生成并增加包版本号.


我找到了GitVersion工具来解决这个问题.我还发现了一些语义版本博客来解释持续交付的包版本.


但不幸的是,GitVersion包对我来说无法正常工作.

  • 它给出了一个错误,即AssemblyVersionAttribute是重复的.
  • 如果我添加<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.我正在尝试新的解决方案.

.net c# visual-studio nuget .net-core

10
推荐指数
1
解决办法
1466
查看次数

在Windows 10(1803)上,如果WPF透明窗口覆盖它们,则所有应用程序都会丢失触摸或手写笔

如果我使用一个简单的空窗口创建一个新的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.克隆它可能会有所帮助.

为什么会发生这种情况以及如何解决?任何回复表示赞赏.

c# wpf uwp

6
推荐指数
1
解决办法
893
查看次数

为什么自Windows 10(1809/1903)以来,我的所有WPF应用程序都无法将其拖动到窗口之外,例如调整窗口大小或拖放?

有一天,我发现我所有的WPF应用程序都无法将其拖动到窗口之外,并且无法使用实时预览来调整任何窗口的大小。

我的问题是为什么会发生这种情况,我该如何解决?


您可以查看下面显示的动画图像:

无法在窗口外调整大小

Visual Studio调整大小演示

您会注意到,当我的光标在窗口之外时,调整大小会立即停止,并且当光标第一次离开窗口时,窗口会保持大小。如果光标重新进入窗口区域,则窗口大小调整将恢复。

我不仅编写了所有WPF应用程序,而且还复制了其他WPF应用程序:

  • Visual Studio 2017/2019年
  • 史努比
  • 屏幕转Gif
  • 等等。

非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当我调整其外部窗口的大小时,该消息将停止接收。该消息在我朋友的系统上正常运行。

wpf windows-10

5
推荐指数
1
解决办法
287
查看次数

标签 统计

c# ×3

wpf ×3

.net ×2

.net-4.6.2 ×1

.net-core ×1

nuget ×1

uwp ×1

visual-studio ×1

windows ×1

windows-10 ×1