在为Windows开发.NET 4.5桌面应用程序时,我习惯使用System.Net.Http.HttpClient后端Web API进行所有通信.我现在正在开发一个Windows应用商店应用程序并注意到它的存在Windows.Web.Http.HttpClient.我已经找到了两个客户之间的主要区别但没有运气的信息.
从MSDN我知道我应该开始Windows.Web.Http.HttpClient在我的Windows应用商店应用中使用,因为System.Net.Http.HttpClient可能会从API中删除:
注意 System.Net.Http和System.Net.Http.Headers命名空间可能在Windows的未来版本中不可用,以供Windows应用商店应用使用.从Windows 8.1和Windows Server 2012 R2开始,使用Windows.Web.Http命名空间中的Windows.Web.Http.HttpClient和相关的Windows.Web.Http.Headers和Windows.Web.Http.Filters命名空间代替Windows运行时应用程序.
但除了这些信息之外,我很难弄清楚主要区别是什么,使用的主要好处是Windows.Web.Http.HttpClient什么?它添加了什么,我们还没有进入System.Net.Http.HttpClient?
非常感谢官方文档支持的答案.
基于通用Windows平台(UWP)构建的Windows 10应用程序是否可以移植回Windows 7客户?特别是,使用XAML制作的?
我正在尝试使用JSON.NET lib将对象反序列化为对象列表.我的json文件是:
[
{
"id": 1,
"name": "Poczta",
"description": "Opis",
"latitude": 52.25197,
"longitude": 20.896355,
"accuracy": 0,
"type": "",
"image": null
},
{
"id": 2,
"name": "WAT",
"description": "Budynek g?ówny - sztab.\r\nza?ó?? g??l? ja??",
"latitude": 52.2531213,
"longitude": 20.8995849,
"accuracy": 0,
"type": "Uczelnia",
"image": null
},
{
"id": 3,
"name": "Przychodnia",
"description": "Opis",
"latitude": 52.250808,
"longitude": 20.895348,
"accuracy": 0,
"type": "",
"image": null
},
{
"id": 4,
"name": "DS3",
"description": "Opis",
"latitude": 52.250063,
"longitude": 20.895847,
"accuracy": 0,
"type": "",
"image": null
}, …Run Code Online (Sandbox Code Playgroud) 我在Metro应用程序的一部分中发生异常时触发了以下方法
void Model_ExceptionOccured(Exception ex)
{
var dlg = new Windows.UI.Popups.MessageDialog("An exception occured during verification: " + ex.Message, "Exception");
dlg.ShowAsync();
}
Run Code Online (Sandbox Code Playgroud)
'dlg.ShowAsync()' - 调用是异步的,但我不在乎等待结果.编译器会为它生成警告:
Because this call is not awaited, execution of the current method continues before the call is completed. Consider applying the 'await' operator to the result of the call.
我应该关心吗?有什么理由我应该添加await关键字,除了摆脱警告?
我很高兴在编码的中间,然后我尝试在调试模式下启动我的应用程序,但我收到此错误消息.
无法激活Windows应用商店应用
由于其许可证存在问题,此应用程序无法启动
该应用程序在几分钟前推出正常,所以这是一个惊喜.我尝试重新启动Visual Studio,但这样做没有帮助.
我想,昨天我得到了令人讨厌的"更新你的开发者许可证"对话框.它没有问题地更新了.
如何使此错误消息消失,以便我可以调试我的应用程序?
我有这个翻转视图:
<FlipView x:Name="models_list" SelectionChanged="selectionChanged">
<FlipView.ItemTemplate>
<DataTemplate>
<Grid x:Name="cv">
<Image x:Name="img1" Source = "{Binding ModelImage}" Stretch="Fill" Tag="{Binding ModelTag}"/>
</Grid>
</DataTemplate>
</FlipView.ItemTemplate>
Run Code Online (Sandbox Code Playgroud)
我想找到当前所选索引的img1.在搜索它时,我在这里的一些帖子中找到了这个方法:
private DependencyObject FindChildControl<T>(DependencyObject control, string ctrlName)
{
int childNumber = VisualTreeHelper.GetChildrenCount(control);
for (int i = 0; i < childNumber; i++)
{
DependencyObject child = VisualTreeHelper.GetChild(control, i);
FrameworkElement fe = child as FrameworkElement;
// Not a framework element or is null
if (fe == null) return null;
if (child is T && fe.Name== ctrlName)
{
// Found the control so …Run Code Online (Sandbox Code Playgroud) 我有一些代码来捕获Windows桌面应用程序内容并保存到.NET中的Bitmap对象.它使用User32.dll和Gdi32.dll(BitBlt)并且工作得很好.但是,当我为代码提供一个包含Windows应用商店应用程序的窗口的句柄时,代码会生成全黑位图.我不确定这是安全功能还是什么.我不能使用ScreenCapture api作为窗口的内容,在调整大小后,几乎总是比屏幕更高/更大.对于Windows应用商店应用,有没有人有幸获取窗口内容,即使它们比屏幕大?
编辑:就像一个笔记我试图捕捉不同的程序的窗口,而不是我自己的程序.我的程序可以假定为.NET 4.6.1/C#中的Windows控制台应用程序
此外,我知道在Windows API中必须以某种方式实现这一点,因为Aero Peek功能,如果您将鼠标悬停在正在运行的程序图标上的任务栏上,则会显示窗口的完整高度,包括屏幕外组件.(见右边的高窗,设置为比我的显示器高出6000px)
我有一个小问题,我有一个组项目,我想给它一个背景图像,它应该缩放保持它的正确尺寸,但默认情况下,它显示左上角的图像,我希望图像居中.
这是一个进一步解释我的问题的插图.(灰色部分是剪裁的)

我有这个XAML
<Image Source="/url/to/image.jpg" Stretch="UniformToFill"/>
Run Code Online (Sandbox Code Playgroud) 所以我在C#(以及一般的.NET/Visual Studio)中完成了我的第一步,并开始编写一个简单的瓷砖拼图作为可移植库,并为不同的目标平台编写UI.我从Console UI开始,转移到WPF应用程序.然后我尝试了"Windows Store",在大多数情况下,我可以复制WPF代码,只需更改一些名称空间和方法签名.
但有些事情确实表现得有点不同,我花了一个多小时的谷歌搜索才得到它给我任何关于我遇到的崩溃的信息.所以,如果我在传统的WPF应用程序中做了类似的东西:
Storyboard.SetTargetProperty(animation,
new PropertyPath("{Canvas.MispelledProperty}"));
Run Code Online (Sandbox Code Playgroud)
我在引发异常的确切位置获得了.NET异常.如果我在Windows应用商店应用程序中犯了同样的错误,我会看到这一点
#if DEBUG && !DISABLE_XAML_GENERATED_BREAK_ON_UNHANDLED_EXCEPTION
UnhandledException += (sender, e) =>
{
if (global::System.Diagnostics.Debugger.IsAttached) global::System.Diagnostics.Debugger.Break();
};
#endif
Run Code Online (Sandbox Code Playgroud)
(编辑:这是在一个名为的文件中App.g.i.cs)
然后我必须仔细查看输出才能找到
WinRT information: Cannot resolve TargetProperty (Canvas.MispelledProperty) on specified object.
Run Code Online (Sandbox Code Playgroud)
现在在某些情况下这可能已经足够了,但我真的很难相信这就是你能得到的全部.我得到了一些与Storyboar工作方式相关的细微差别相关的问题很容易解决(完成的事件直接附加到动画中,而不像WPF对应的那样被解雇)但是现在我对这个错误完全无能为力:
A first chance exception of type 'System.ArgumentOutOfRangeException' occurred
Run Code Online (Sandbox Code Playgroud)
只是通过疯狂点击导致,这也导致整个应用程序崩溃.
现在我的应用程序非常简单,它可能与我如何处理PointerPressed和PointerReleased事件有关,但是如果没有更好的开始,那真的很令人沮丧.
所以我想实际的问题是:它真的应该是这样的,还是我可以配置调试器给我更多有用的信息?如果没有那样:你们在开发Windows应用商店应用时使用了哪种调试技巧/解决方法?
更新:
好吧,起初我认为这只发生在WinRT相关的Exception上,即在CLR之外发生的地方以及没有正确包装的情况,但事实证明所有未处理的异常都会带您到 App.g.i.cs而不是它们发生的地方.例如,我故意试图从一个方法中的范围中访问一个列表,以查看Visual Studio是否会在引发异常时将我带到那里,而是让我再次使用它App.g.i.cs.在本地我得到这个Windows.UI.Xaml.UnhandledExceptionEventArgs,消息字符串有一些看起来几乎像堆栈跟踪但没有行号的信息.这是我故意错误的一个例子:
System.ArgumentOutOfRangeException
at System.ThrowHelper.ThrowArgumentOutOfRangeException()
at System.Collections.Generic.List`1.get_Item(Int32 index)
at StorePuzzle.PuzzleRenderer.HandleTileReleased(Object sender, PointerRoutedEventArgs e)
Run Code Online (Sandbox Code Playgroud)
我想要的只是Visual Studio立即将我带到引发异常的位置而不是App.g.i.cs像"非商店应用程序"那样带我去.现在,编译器预处理器指令使它看起来像我可以关闭它(#if DEBUG && …
我是Windows Store应用程序的新手C#,我正在尝试了解图像内存的处理方式.我的应用很简单:
1)它使用Windows.UI.Xaml.Media.Imaging.BitmapImage对象从文件引用位图,然后将其用作Windows.UI.Xaml.Controls.Image对象的Source .在我的情况下,磁盘上的图像尺寸大于屏幕上显示的尺寸,因此系统会对其进行缩放.
我的问题是WinRT如何处理图像的内存?我使用了该vmmap工具,我在Mapped File部分看到我的图像文件有一个条目.我想这意味着这个文件的原始字节被完全加载到内存中.由于这是JPG,因此必须将这些字节解码为像素字节.从我的测试看来,设置BitmapImage的UriSource实际上并不会导致任何处理,因为它需要0毫秒,而是有一些延迟加载正在进行.
所以问题是:哪个对象是未压缩的非缩放像素数据的支配者?在屏幕上绘制的缩放像素数据的支配者是什么对象?有没有工具可以轻松告诉我这个?在Java世界中,我使用Eclipse内存分析器工具.我尝试使用PerfView,但结果对我没有意义,似乎该工具用于分析性能.
更新:
在BUILD会议上,团队讨论了这个问题Windows Performance Toolkit.我从未听过有人提到过PerfView,所以我相信WPT是分析内存和性能的最新最好的工具,这里有一个链接:
clr memory-management windows-8 windows-runtime windows-store-apps
c# ×6
windows-8 ×3
xaml ×2
.net ×1
async-await ×1
clr ×1
flipview ×1
json.net ×1
uwp ×1
winrt-xaml ×1