jjzjj

IProgress

全部标签

c# - IProgress<T> 同步

我在C#中有以下内容publicstaticvoidMain(){varresult=Foo(newProgress(i=>Console.WriteLine("Progress:"+i)));Console.WriteLine("Result:"+result);Console.ReadLine();}staticintFoo(IProgressprogress){for(inti=0;iMain的一些输出是:第一次运行:Result:1001Progress:4Progress:6Progress:7Progress:8Progress:9Progress:3Progress:0P

c# 是否可以在需要接口(interface)时提供 lambda?

在一些类方法A中,我需要调用一个库方法B,它接受一个IProgress。作为参数。通常,我可能会实现IProgress作为A所在类的一部分,然后将“this”传递给方法B。或者我可能会创建一个新类,其唯一目的是实现IProgress并正确处理它——然后在这种情况下,我将创建该类的一个实例并将其传递给B。但我真正想要的是实现IProgress出现在我调用B的方法内部,这样调用代码和IProgress之间的视觉断开就更少了执行。(我认为我的IProgress实现是调用方法的一种私有(private)的、非共享的细节,因此我不希望我的IProgress的实现在一个可能是整个其他类的完全独立的

c# - IProgress<T> 多久报告一次进度

使用IProgress时报告进度,应该是代码报告进度的责任是将其进度报告的频率限制在“合理”的范围内,-或-具体执行责任IProgress请注意,进度报告的频率可能高于其呈现此进度的合理方式。问题的上下文是我有一些使用IProgress的代码报告进度,并且它以非常高的速度报告进度。我想用UI进度条显示进度。如果我使用提供的Progress实现(将进度发布到UISyncronizationContext),然后它会导致UI无响应(即发送到消息队列的消息太多,用户甚至无法单击对话框上的“取消”按钮)。所以,我可以通过减少报告来解决这个问题,但是如果我有一个IProgress怎么办?只是将进