我正在包装一个供我自己使用的库.要获得某个属性,我需要等待一个事件.我正在尝试将其包装成异步调用.
基本上,我想转
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或其他东西.
我有一个集合,我想迭代所有非类型的对象Foo.基本上我喜欢与之相反的东西OfType<Foo>().这样做的适当方法是什么?
到目前为止我用过:
var result = myList.Where(elem => !(elem is Foo));
Run Code Online (Sandbox Code Playgroud) 有关于代码度量的一些问题在这里,尤其是这一个目标价值.我正在寻找的是现实生产项目中的"常用".也许只是我,但是没有任何项目我曾经记住这些事情,所以当我运行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)
更新:问题是,您通常会在"野外"看到什么价值?除了最佳值和最佳实践,通常会遇到什么值?
有几种工具可以在不牺牲质量的情况下优化JPEG,例如jpegtran.exe和Smush.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的答案.
问题是:可以用FreeImage完成,如果是这样的话:怎么做?
我已经为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# ×5
.net ×1
asp.net-mvc ×1
async-await ×1
asynchronous ×1
code-metrics ×1
freeimage ×1
jpeg ×1
linq ×1