小编Dmi*_*gin的帖子

如何在WPF中正确呈现大位图?

我没有期待

RenderTargetBitmap.Render(visual)
Run Code Online (Sandbox Code Playgroud)

有任何副作用摘录改变位图数据本身.看起来这不是真的.在一些丑陋的渲染工件开始发生之前,我无法重复超过60次.

如何在WPF中正确渲染很多精灵?下面是重现问题的代码.

我用这种方式生成精灵:

    BitmapSource Sprite()
    {
        var bitmap = new RenderTargetBitmap(
            500, 500,
            96, 96,
            PixelFormats.Default);

        var visual = new DrawingVisual();
        var rect = new Rect(
                    new Size(
                        bitmap.Width,
                        bitmap.Height));

        using (DrawingContext context = visual.RenderOpen())
            context.DrawLine(
                new Pen(Brushes.Red, 100),
                rect.TopLeft,
                rect.BottomRight);

        bitmap.Render(visual);
        bitmap.Freeze();
        return bitmap;
    }
Run Code Online (Sandbox Code Playgroud)

这是渲染其中许多的画布:

    public BitmapSource Canvas
    {
        get
        {
            var bitmap = new RenderTargetBitmap(
                1980, 1080,
                96, 96,
                PixelFormats.Default);

            var tiles = 70;
            for (int i = 0; i < tiles; i++)
            {
                var …
Run Code Online (Sandbox Code Playgroud)

.net c# wpf wpf-4.5

21
推荐指数
1
解决办法
1479
查看次数

如何使用ASP.NET Core进行流式处理

如何在ASP.NET Core中正确传输响应?有这样的控制器(更新代码):

[HttpGet("test")]
public async Task GetTest()
{
    HttpContext.Response.ContentType = "text/plain";
    using (var writer = new StreamWriter(HttpContext.Response.Body))
        await writer.WriteLineAsync("Hello World");            
}
Run Code Online (Sandbox Code Playgroud)

Firefox/Edge浏览器显示

你好,世界

,Chrome/Postman报告错误:

localhost页面无效

localhost意外关闭了连接.

ERR_INCOMPLETE_CHUNKED_ENCODING

PS我即将流式传输大量内容,因此我无法提前指定Content-Length标头.

c# asp.net-core-mvc asp.net-core asp.net-core-1.0

19
推荐指数
3
解决办法
3万
查看次数

它看起来像C#bug吗?

创建一个控制台应用程序来重现:

struct Test
{
    public static readonly Test? Null = null;
}

class Program
{
    static void Main(string[] args)
    {
        var t = Test.Null;
    }
}
Run Code Online (Sandbox Code Playgroud)

它是可编译的,但我们将在运行时具有以下内容:

mscorlib.dll中发生了未处理的"System.TypeLoadException"类型异常.附加信息:无法从程序集"ConsoleApplication17,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null"加载类型"ConsoleApplication17.Test".

这种方法解决了这个问题:

struct Test
{
    public static Test? Null => null;
}
Run Code Online (Sandbox Code Playgroud)

c# struct nullable

16
推荐指数
1
解决办法
691
查看次数

如何正确访问c ++/CLI initonly TimeSpan字段?

以下代码编译警告和intellisense错误:

ref class Test {
    initonly static TimeSpan Delay = TimeSpan(1,1,1); 

    Test() {
        long long ticks = Delay.Ticks; // << problem
    }
};
Run Code Online (Sandbox Code Playgroud)

问题是:

  • 警告C4395:'System :: TimeSpan :: Ticks :: get':成员函数将在initonly数据成员'Test :: Delay'的副本上调用
  • IntelliSense:不允许获取initonly字段的地址

如何正确访问Ticks?

.net c++-cli .net-4.0 visual-c++

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

MEF和抽象工厂

更新:我应该尝试通过DI容器处理它还是这里的错误抽象级别?

我想使用MEF(.NET 4.5)实现抽象工厂.

它对我不起作用......

构图保持不变.由于以下错误,更改被拒绝:

该组合物产生单一组成误差.根本原因如下.查看CompositionException.Errors属性以获取更多详细信息.

1)没有找到符合约束条件的导出:

ContractName Mef3.Factory

RequiredTypeIdentity Mef3.Factory导致:无法在"Mef3.Program"部分设置导入'Mef3.Program._factory(ContractName ="Mef3.Factory")'.

元素:Mef3.Program._factory(ContractName ="Mef3.Factory") - > Mef3.Program

这是在MEF中做到这一点的正确方法吗?如何将id转发给Foo/Bar ctors?

代码:

class Program
{
    static void Main(string[] args)
    {
        var program = new Program();
        program.Run();
    }

    readonly CompositionContainer _container;

    public Program()
    {
        var catalog = new AssemblyCatalog(Assembly.GetExecutingAssembly());
        _container = new CompositionContainer(catalog);
        _container.ComposeParts(this);
    }

    [Import]
    public Factory _factory;

    public void Run()
    {
        var foo = _factory.GetInstance("foo", 123);
        Console.WriteLine(foo is Foo);
    }
}

[Export]
public class Factory
{
    private readonly ExportFactory<Foo> _fooFactory;
    private …
Run Code Online (Sandbox Code Playgroud)

.net c# dependency-injection mef .net-4.5

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

CancellationToken 在 ASP.NET Core ActionFilter 中是否可用?

我可以注入CancellationTokenASP.NET核心作用的方法,但我不希望再使用动作过滤器与它合作。如何在实施时访问取消令牌 IAsyncActionFilter?我的方法不应该把它作为参数。

c# action-filter asp.net-core

4
推荐指数
1
解决办法
1032
查看次数

如何防止 Kotlin 中的类型擦除?

您能否建议如何使其工作Kotlin

interface SomeHandler 
interface Handler<T> : SomeHandler {
    fun handle(e: T)
}

class Sender(vararg val handler: SomeHandler) {
    fun <T> send(e: T) {
        for (h in handler)
            if (h is Handler<T>)
                h.handle(e) // ERROR: Cannot check for instance 
                            // of erased type: Scratch.Handler<T>
    }
}
Run Code Online (Sandbox Code Playgroud)

我只想在这里调用所有匹配的处理程序。

generics type-erasure kotlin

3
推荐指数
1
解决办法
987
查看次数

Rx .NET 中的调度

预计都在 .NET Core 2.0 控制台应用程序的主线程上执行,所以输出被阻塞了 10 秒:

    static void Main(string[] args)
    {
        WriteLine($"We are on {Thread.CurrentThread.ManagedThreadId}");

        var subject = new Subject<long>();
        var subscription = subject.Subscribe(
            i => WriteLine($"tick on {Thread.CurrentThread.ManagedThreadId}"));

        var timer = Observable.Interval(TimeSpan.FromSeconds(1))
            .SubscribeOn(Scheduler.CurrentThread)
            .Subscribe(i => subject.OnNext(i));

        Thread.Sleep(10000);
    }
Run Code Online (Sandbox Code Playgroud)

但事实并非如此——随机线程每隔一秒就会有一条新行进入控制台:

We are on 1
tick on 4
tick on 5
tick on 4
tick on 4
tick on 4
tick on 4
tick on 4
tick on 4
tick on 5
Run Code Online (Sandbox Code Playgroud)

我做错了什么?

c# system.reactive .net-core

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