小编Joh*_*lip的帖子

将事件转换为异步调用

我正在包装一个供我自己使用的库.要获得某个属性,我需要等待一个事件.我正在尝试将其包装成异步调用.

基本上,我想转

void Prepare()
{
    foo = new Foo();
    foo.Initialized += OnFooInit;
    foo.Start();
}
string Bar
{
    return foo.Bar;  // Only available after OnFooInit has been called.
}
Run Code Online (Sandbox Code Playgroud)

进入这个

async string GetBarAsync()
{
    foo = new Foo();
    foo.Initialized += OnFooInit;
    foo.Start();
    // Wait for OnFooInit to be called and run, but don't know how
    return foo.Bar;
}
Run Code Online (Sandbox Code Playgroud)

怎么能最好地完成?我可以循环并等待,但我正在尝试找到更好的方法,如使用Monitor.Pulse(),AutoResetEvent或其他东西.

c# asynchronous async-await

8
推荐指数
1
解决办法
3160
查看次数

在Linq中反转OFType?

可能重复:
如何在LINQ中实现具有良好调用语法的NotOfType <T>?

我有一个集合,我想迭代所有类型的对象Foo.基本上我喜欢与之相反的东西OfType<Foo>().这样做的适当方法是什么?

到目前为止我用过:

var result = myList.Where(elem => !(elem is Foo));
Run Code Online (Sandbox Code Playgroud)

c# linq

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

生产项目的代码度量标准(C#,Visual Studio)的常用值

有关于代码度量的一些问题在这里,尤其是这一个目标价值.我正在寻找的是现实生产项目中的"常用".也许只是我,但是没有任何项目我曾经记住这些事情,所以当我运行ReSharper代码问题或Visual Studio代码指标时,我似乎是第一个 - 所以价值总是让我感到惊讶.

我当前的SharePoint分配示例:

Maintainability | Cyclomatic cmplx. | Inher. depth | Class coupl. | LOC
67              | 6,712             | 7            | 569          | 21,649
68              | 3,192             | 7            | 442          | 11,873
Run Code Online (Sandbox Code Playgroud)

更新:问题是,您通常会在"野外"看到什么价值?除了最佳值和最佳实践,通常会遇到什么值?

c# code-metrics visual-studio-2010

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

使用FreeImage对JPEG进行无损优化

有几种工具可以在不牺牲质量的情况下优化JPEG,例如jpegtran.exeSmush.it.我一直在寻找通过代码(最好是在.NET)中实现它的方法,而我目前已经确定了FreeImage,但是我没有得到我想要的结果.

JPEG_OPTIMIZE一面旗帜,但你必须设置一个质量标志,然后它不再是无损的.

这是我试过的:

var image = FreeImage.Load(FREE_IMAGE_FORMAT.FIF_JPEG, fileIn, FREE_IMAGE_LOAD_FLAGS.JPEG_ACCURATE);
FreeImage.Save(FREE_IMAGE_FORMAT.FIF_JPEG, image, fileOut, FREE_IMAGE_SAVE_FLAGS.JPEG_OPTIMIZE);
Run Code Online (Sandbox Code Playgroud)

但它会进行压缩.我认为FreeImage可以优化(通过剥离元数据等),但我找不到如何保持相同的压缩/图像质量.这样做的正确方法是什么?

编辑:有一些关于无法优化JPEG的混淆,简短的回答是肯定的,因为你可以删除未使用的元数据.我不是在谈论压缩.请参阅这些主题或查看Michael B的答案.

用于进一步无损jpeg压缩的库

是否有Windows版Smush.it可用?

图像压缩工具

用于网络上的图像的图像优化器(jpg,gif和png)

问题是:可以用FreeImage完成,如果是这样的话:怎么做?

.net c# jpeg freeimage

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

如果未找到动态内容,则正确地将用户发送到404(ASP.NET MVC)

我已经为ASP.NET MVC 3中的一般情况实现了404处理,因为没有找到控制器/视图.但是,如果用户试图访问无法找到的内容,应如何在控制器内部进行处理?例如www.foo.bar/Games/Details/randomjunk将在里面调用GamesController:

public ActionResult Details(string id) // id is 'randomjunk'
{
  if(DoesGameExist(id) == false)
    // Now what?
Run Code Online (Sandbox Code Playgroud)

我可以做一个,return Redirect('/Errors/Http404');但这似乎不是正确的方法.你应该抛出异常还是别的什么?

在这种情况下我们可以有一个特殊的观点,但首先我们需要一个很好的方法来应用于几个案例.

编辑:我想展示我已经拥有的友好404页面的一般情况.

c# asp.net-mvc http-status-code-404 asp.net-mvc-3

3
推荐指数
2
解决办法
6504
查看次数