以下代码在Silverlight中正常工作:
private void Button_Click_1(object sender, RoutedEventArgs e)
{
Storyboard storyboard = new Storyboard();
DoubleAnimation doubleAnimation = new DoubleAnimation();
doubleAnimation.From = 50;
doubleAnimation.To = 100;
doubleAnimation.RepeatBehavior = RepeatBehavior.Forever;
doubleAnimation.AutoReverse = true;
doubleAnimation.Duration = new Duration(TimeSpan.FromMilliseconds(200));
storyboard.Children.Add(doubleAnimation);
Storyboard.SetTarget(doubleAnimation, button1);
Storyboard.SetTargetProperty(doubleAnimation, new PropertyPath("Width"));
storyboard.Begin();
}
Run Code Online (Sandbox Code Playgroud)
在WinRT/Metro中,它需要一个小的改动才能编译:
Storyboard.SetTargetProperty(doubleAnimation, "Width");
Run Code Online (Sandbox Code Playgroud)
但是当你运行它时,没有任何反应.
如果您将属性从"宽度"更改为"不透明度"(也可以更改从= 0和To = 1).
"宽度"有什么问题?
我的应用程序崩溃时出现内存不足的异常,有时可能还会因内存不足而导致其他异常.
我用这个简单的代码重现了这个问题:
for (int i = 0; i < 100000; i++)
var bmp = new RenderTargetBitmap(256, 256, 96, 96, PixelFormats.Default);
Run Code Online (Sandbox Code Playgroud)
理论上,这个代码不应该崩溃,因为位图应该自动被垃圾收集,但是当它以32位模式运行时它会一直崩溃.
问题可以修复如下:
for (int i = 0; i < 100000; i++)
{
var bmp = new RenderTargetBitmap(256, 256, 96, 96, PixelFormats.Default);
if (i % 500 == 0)
{
GC.Collect();
GC.WaitForPendingFinalizers();
}
}
Run Code Online (Sandbox Code Playgroud)
当然这个解决方案违背了你不应该明确地调用GC.Collect的常识,但我怀疑这是一个实际上有意义的场景.
任何人都可以提供任何明智的见解吗?有没有更好的方法来解决问题?
我想使用Enterprise的额外功能.但是我的一些团队是Pro,我希望能够在为团队推荐最佳实践之前检查他们可用的功能.
两种变体的并排安装将是完美的.可能吗?
.NET Framework 4.6.2似乎内置了System.Net.Http程序集/命名空间.还有一个我可以安装的同名Nuget包.
作为一般原则,Nuget包可以替换(例如更新)包含在已安装框架中的程序集吗?
具体来说,我应该使用Nuget版本还是System.Net.Http的框架版本?
我正在使用 ASP.NET.Core 将 Web 服务器嵌入到大型遗留桌面应用程序中。我的中间件组件需要引用预先存在的应用程序对象。
我很困难地使用本机 DI 容器完成了这项工作,但生成的代码非常迟钝和不透明。
我真正想做的是通过构造函数参数显式注入依赖项,这些依赖项是特定的预先存在的对象实例。DI 容器的自动魔法并没有给我任何好处,只是给我带来了很多痛苦!
是否可以在没有 DI 容器的情况下使用 ASP.NET.Core?
下面是一些简化的代码来说明我当前的解决方案:
class Dependency
{
public string Text { get; }
public Dependency(string text) => Text = text;
}
class MyMiddleware
{
private readonly RequestDelegate _next;
private readonly Dependency _dep1;
private readonly Dependency _dep2;
public MyMiddleware(RequestDelegate next, Dependency dep1, Dependency dep2)
{
_next = next;
_dep1 = dep1;
_dep2 = dep2;
}
public Task InvokeAsync(HttpContext context)
{
return context.Response.WriteAsync(_dep1.Text + _dep2.Text);
}
}
Run Code Online (Sandbox Code Playgroud)
启动和应用代码:
class Startup
{ …Run Code Online (Sandbox Code Playgroud) c# dependency-injection asp.net-core asp.net-core-middleware asp.net-core-2.0
我使用.NET XmlSerializer类来反序列化GPX文件.
GPX标准有两个版本:
此外,某些GPX文件未指定默认命名空间:
我的代码需要处理所有三种情况,但我无法弄清楚如何让XmlSerializer这样做.
我确信必须有一个简单的解决方案,因为这是一个常见的场景,例如KML有同样的问题.
c# ×5
.net ×2
asp.net-core ×1
gpx ×1
httpclient ×1
kml ×1
nuget ×1
winrt-xaml ×1
wpf ×1
xml ×1