小编Met*_*per的帖子

代码隐藏中的WinRT/Metro动画

以下代码在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).

"宽度"有什么问题?

c# windows-runtime winrt-xaml

15
推荐指数
1
解决办法
6025
查看次数

由于非托管内存处理的延迟而导致内存不足?

我的应用程序崩溃时出现内存不足的异常,有时可能还会因内存不足而导致其他异常.

我用这个简单的代码重现了这个问题:

  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的常识,但我怀疑这是一个实际上有意义的场景.

任何人都可以提供任何明智的见解吗?有没有更好的方法来解决问题?

.net c# wpf

15
推荐指数
1
解决办法
1068
查看次数

我可以并排安装Visual Studio 2015 Enterprise和Pro吗?

我想使用Enterprise的额外功能.但是我的一些团队是Pro,我希望能够在为团队推荐最佳实践之前检查他们可用的功能.

两种变体的并排安装将是完美的.可能吗?

visual-studio-2015

9
推荐指数
1
解决办法
2772
查看次数

我应该使用System.Net.Http Nuget Package吗?

.NET Framework 4.6.2似乎内置了System.Net.Http程序集/命名空间.还有一个我可以安装的同名Nuget包.

作为一般原则,Nuget包可以替换(例如更新)包含在已安装框架中的程序集吗?

具体来说,我应该使用Nuget版本还是System.Net.Http的框架版本?

.net c# httpclient nuget

7
推荐指数
2
解决办法
540
查看次数

可以在没有 DI 容器的情况下使用 ASP.NET.Core

我正在使用 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

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

如何使用XmlSerializer处理不同的命名空间版本?

我使用.NET XmlSerializer类来反序列化GPX文件.

GPX标准有两个版本:

  • <gpx xmlns ="http://www.topografix.com/GPX/1/0"> ... </ gpx>
  • <gpx xmlns ="http://www.topografix.com/GPX/1/1"> ... </ gpx>

此外,某些GPX文件未指定默认命名空间:

  • <gpx> ... </ gpx>

我的代码需要处理所有三种情况,但我无法弄清楚如何让XmlSerializer这样做.

我确信必须有一个简单的解决方案,因为这是一个常见的场景,例如KML有同样的问题.

c# xml xml-serialization kml gpx

2
推荐指数
1
解决办法
2693
查看次数