Tag: uwp

在.Net native中的线程池上运行异步任务的性能很差

我发现托管vs .Net本机代码有一个奇怪的区别。 我有一个繁重的工作重定向到线程池。 当在托管代码中运行应用程序时,一切都运行顺畅,但是一旦我打开本机编译 – 任务运行速度慢几十倍,以至于它挂起UI线程(我猜CPU是如此过载)。 以下是调试输出的两个屏幕截图,左侧的屏幕截图来自托管代码,右侧的屏幕截图来自本机编译。 正如您所看到的,UI任务所消耗的时间在两种情况下几乎相同,直到启动线程池作业时 – 然后在托管版本中UI经过的时间增长(实际上UI被阻止而您无法采取任何操作)。 线程池工作的时间不言自明。 重现问题的示例代码: private int max = 2000; private async void UIJob_Click(object sender, RoutedEventArgs e) { IProgress progress = new Progress((p) => { MyProgressBar.Value = (double)p / max; }); await Task.Run(async () => { await SomeUIJob(progress); }); } private async Task SomeUIJob(IProgress progress) { Stopwatch watch […]

Windowsapp store应用内购买订阅模式

很久以前,微软宣布开发人员可以将IAP(应用程序内购买)作为自动续订订阅出售,即用户需要支付一次,直到用户明确取消订阅为止。 有一些通知: Dev Center开放用于Windows 10应用程序提交,添加了新function 您是否计划将订阅/定期购买添加到Windowsapp store? Bernardo Zamora:是的。 这是Build中提到的将在未来几个月内推出的function之一。 我们将让所有开发人员知道此function何时可用。 大段引用 贝尔纳多萨莫拉 微软 将Windows应用程序分发给全世界 新的订阅支持应用内购买function将通过Windows 10进行扩展,以包含定期计费或订阅选项,该选项将使Windowsapp store使用商店结算系统销售基于订阅的内容。 对于内容和生产力服务非常有用,此订阅function将支持大多数市场中的Windowsapp store消费者支付方式,并具有开发人员可配置的时间段。 到目前为止,我在Windows SDK和Windows Developer Dashboard(App发布设置)中都没有看到类似的内容。 我也没有在MSDN上找到任何关于此事的内容。 具有有限寿命的持久IAP并不好,因为它使用户每隔一段时间明确地重新购买IAP。 Windows 10周年更新将于2016年8月2日出现,并且有间接迹象表明Windows Store将支持IAP订阅,我要求Windows Insider程序成员了解详细信息。 在IAP订阅的实施方式上是否有任何样本? 更新(2017年1月1日) : 有些信息开始出现在MSDN中。 新的Windows.Services.Store命名空间中有一个StoreSubscriptionInfo类,可用于面向Windows 10,版本1607及更高版本的UWP应用程序。 截至1st of Jan 2017 , StoreSubscriptionInfo类文档指出: 提供代表具有定期结算的订阅的产品SKU的订阅信息。 Windows开发人员中心或商店目前不支持订阅。 此类的存在是为了提供对订阅的未来支持,并且不应由当前版本中的代码使用。 更新(2017年8月24日) : 最近出现了一些有用的文档: 为您的应用启用订阅加载项 。 很遗憾这个早期采用计划并不公开。 更新(2017年10月5日) : 我有来自@Stefan Wick […]

使用WrapGrid的Uwp Grouped GridView

我正在开发一个UWP应用程序,我试图在每个gridview组中对齐我的项目 我有这个 : GROUP 1 Data 1 | Data 2 | Data 3 Data 1 | Data 2 | Data 3 Data 1 | Data 2 | Data 3 GROUP 2 Data 1 | Data 2 | Data 3 Data 1 | Data 2 | Data 3 我想要这个: GROUP 1 ______________________________Data 1 | Data 2 […]

DataPackage.SetDataProvider不等待(与其文档状态不同)

DataPackage.SetDataProvider的文档说明: 当您的应用程序…在目标应用程序请求之前不想提供数据时,请使用SetDataProvider方法。 但是当我运行以下代码时,它会立即调用回调方法。 static void CopyToClipboardReference(string s) { DataPackage dataPackage = new DataPackage(); reference = s; dataPackage.SetDataProvider(StandardDataFormats.Text, CopyToClipboardAction); Clipboard.SetContent(dataPackage); } static string reference; static void CopyToClipboardAction(DataProviderRequest request) { //Called immediately! request.SetData(reference); } 当我将StandardDataFormats.Text更改为StandardDataFormats.Html它确实按预期工作(延迟呈现)但是我没有在记事本等应用程序中获得“粘贴”选项。 我如何让它等待文本,直到它从目标应用程序调用,因为它应该按照其文档进行操作? 另外 : 不会引发DataTransfer.OperationCompleted事件。

Uwp在用户登录时执行backgroundtask

我正在学习win10 uwp,我的目标是在用户登录时执行操作,例如更新磁贴。 我已经检查了msdn,似乎我需要一个BackgroundTask。 所以我按照说明创建并注册了https://msdn.microsoft.com/en-us/library/windows/apps/mt299100.aspx和相关页面上的后台任务。 BackgroundTaskBuilder taskBuilder= new BackgroundTaskBuilder(); taskBuilder.Name = “TaskClassName”; taskBuilder.TaskEntryPoint = “TaskNameSpace.TaskClassName”; // set conditions (execute when user become present) taskBuilder.SetTrigger(new SystemTrigger(SystemTriggerType.SessionConnected, false)); taskBuilder.SetTrigger(new SystemTrigger(SystemTriggerType.UserPresent, false)); var registration= taskBuilder.Register(); 我的BackgroundTask命名空间和类放在同一解决方案下的一个独立项目中,并添加到Package.appxmanifest的Declaration选项卡中,并选择了属性System Event 。 我的IBackgroundTask实现是 public void Run(IBackgroundTaskInstance taskInstance) { BackgroundTaskDeferral deferral = taskInstance.GetDeferral(); UpdateMyTile(); deferral.Complete(); } 在使用visual studio进行调试时,代码运行相关并更新磁贴,因此我认为我的问题在于如何注册任务而不是在任务实现中。 为了确保我已经向现有项目添加了第二个BackgroundTask ,它每15分钟基于计时器调用并执行相同的function。 在第二种情况下,后台任务已注册并按预期执行。 BackgroundTaskBuilder taskBuilderT= new […]

启用/禁用RadDataGrid数据模板列中的按钮,它们具有在条件下绑定到它们的命令

我设置了一个bool属性并将其绑定到xaml中的IsEnabled,但ICommand CanExecute方法覆盖了xaml中的IsEnabled,因此我的bool属性无效。 当我在视图模型中定义CanExecute方法中的条件时,它会禁用方法所绑定的所有按钮,或者启用所有这些按钮。 它是一个网格,每行显示3个不同的按钮,每个按钮转到一个新的xaml屏幕。 如果按钮所在的行上没有特定条件的数据,则需要禁用该按钮。 我如何设置此项以便按钮在某种情况下被禁用? 自定义命令: public class CustomCommand : ICommand { private Action execute; private Predicate canExecute; public CustomCommand(Action execute, Predicate canExecute) { this.execute = execute; this.canExecute = canExecute; } public event EventHandler CanExecuteChanged { add { } remove { } } public bool CanExecute(object parameter) { //throw new NotImplementedException(); bool b = […]

解压缩抛出“无法正确加载基础压缩例程”

尝试使用以下代码在Win10移动(UWP)上解压缩文件 using (ZipArchive archive = new ZipArchive(stream, ZipArchiveMode.Read)) { ZipArchiveEntry entry = archive.Entries.First(); using (Stream reader = entry.Open()) { 在entry.Open()抛出以下错误。 “无法正确加载底层压缩例程。” 内在的例外 “无法加载DLL’clrcompression.dll’:找不到指定的模块。(HRESULTexception:0x8007007E)” 重要提示: entry.Open()在win10桌面上工作正常但在Win10移动版上没有工作,具有相同的项目(UWP) 使用Win10移动版10.0.14393.576。 (Lumia 650) UWP项目的目标版本是10.0 BUILD 14393 对桌面和移动版本使用相同的文件。 该文件在后端创建一个简单的文件 using (ZipArchive archive = new ZipArchive(stream, ZipArchiveMode.Create,true)) 我正在使用Xamarin表格(我不认为这是相关的) 问题:有人经历过同样的例外吗? 它的根本原因是什么? 有哪些可用的解决方法? (我需要文件压缩跨平台) 更新:我按要求创建了简单的测试项目(感谢您查看)。 解压缩在测试项目中工作,但它正在加载一个不同的模块。 Debug / Modules窗口指出exception抛出项目使用System.IO.Compression.dll 4.06.24705.1,工作项目使用1.00.24301.1。 我上传了两个project.lock.json文件以进行比较https://1drv.ms/f/s!AqROiejT4oI3lL1q1tu3iJcfA2tKyg 。

Timetrigger没有触发后台任务UWP

我和这个人有同样的问题: UWP Timetrigger没有工作,但我无法评论这个问题,因为我的声誉不够高,所以我正在创建一个新问题。 正如我所说,我有同样的问题。 我注册了后台任务,但没有任何反应。 我的后台任务位于一个单独的项目(运行时组件)中。 所以这不是问题。 这是我注册任务的方法: public static BackgroundTaskRegistration Register(string name, string taskEntryPoint, IBackgroundTrigger trigger, IBackgroundCondition condition) { var foundTask = BackgroundTaskRegistration.AllTasks.FirstOrDefault(x => x.Value.Name == name); if (foundTask.Value != null) return (BackgroundTaskRegistration)foundTask.Value; var builder = new BackgroundTaskBuilder(); builder.Name = name; builder.TaskEntryPoint = taskEntryPoint; builder.SetTrigger(trigger); if (condition != null) builder.AddCondition(condition); return builder.Register(); } 这就是我所说的: […]

UWP:AES加密和解密

我有一个简单的类来为Windows Phone 8做一些基本的本地加密。我想在Windows Store的新UWP Windows 10应用程序中再次使用该类。 不幸的是我不能再使用AesManaged类了。 我试图使用Windows.Security.Cryptography.Core ,但我完全卡住了。 这是我用于Windows Phone 8的原始类。我必须在互联网上的某个地方找到它。 using System.Security.Cryptography; namespace TestGame { public class AesEnDecryption { private string AES_Key = “MYLiSQ864FhDevJOeMs9EVp5RmfC7OuH”; private string AES_IV = “FoL5Tyd9sZclVn5A”; public string AES_encrypt(string Input) { var aes = new AesManaged(); aes.KeySize = 128; aes.BlockSize = 128; aes.Key = Convert.FromBase64String(AES_Key); aes.IV = Encoding.UTF8.GetBytes(AES_IV); var encrypt […]

Xamarin表单UWP – 无法调试共享代码

我最近开始将这个问题用于最新版本的Xamarin Forms with .NET standard 2.0作为代码共享策略。 我能够在UWP项目中的任何代码中放置断点并停止,但如果我在共享DLL代码中放置断点,则断点将从纯红色变为用白色填充的红色轮廓圆圈。 当我将鼠标放在断点上时,它表示尚未为该位置加载符号。 为调试Xamarin Forms UWP的共享代码,我做错了什么? Android和iOS工作。