小编iLe*_*ing的帖子

同步方法中的异步调用

这是一个简单的例子:

public event EventHandler CookinDone = delegate{};

public void CoockinRequest(){
    var indicator = new ActivityIndicator();
    ActivityIndicator.Show("Oooo coockin' something cool");

    var bw = new BackgroundWorker();    
    bw.DoWork += (sender, e) => CockinService.Cook();
    bw.RunWorkerCompleted += (sender, e) => {
       indicator.Hide();
       CookinDone.Invoke(this,null);
    };

    bw.RunWorkerAsync();
}
Run Code Online (Sandbox Code Playgroud)

现在,每次我使用该方法时,我都必须拦截CookinDone事件并继续前进.

var cook = new Cook();
cook.CookinDone += (sender, e) => MessageBox.Show("Yay, smells good");
cook.CoockinRequest();
Run Code Online (Sandbox Code Playgroud)

但是如何通过将方法的返回类型设置为布尔值并在Cookin完成时返回结果来简化它?

if (CoockinRequest()) MessageBox.Show('Yay, smells even better');
Run Code Online (Sandbox Code Playgroud)

如果我把while (bw.IsBusy)它放在那里它会拧我的ActivityIndi​​cator,冻结主线程,我觉得这将是最糟糕的事情.还有一些Monitor.Wait东西和其他一些东西TaskFactory,但所有这些东西似乎太复杂,无法在简单的场景中使用.

它可能在不同的环境中也有所不同,例如某些方法对WPF应用程序有用,有些对于其他东西以及诸如此类的东西,但应该有一般模式不对吗?

你是怎么做那些家伙的?

c# multithreading c#-4.0

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

如何在powershell中使用通用列表<T>时删除所有

如果我使用这样的通用列表:

$foo = New-Object 'system.collections.generic.list[object]'
$foo.Add((New-Object PSObject -Property @{ Name="Foo1"; }))
$foo.Add((New-Object PSObject -Property @{ Name="Foo2"; }))
$foo.Add((New-Object PSObject -Property @{ Name="foo3"; }))
Run Code Online (Sandbox Code Playgroud)

我该如何应用RemoveAll()方法List<T>?是否可以使用谓词?我怎样才能删除以大写字母'F'开头的所有项目?

powershell powershell-2.0

6
推荐指数
2
解决办法
2192
查看次数

Windows 8中的Windows服务上的Debugger.Launch()

在我安装完Windows 8之后,完全合法的声明就不再适用了:

#if DEBUG
    Debugger.Launch();
#endif
Run Code Online (Sandbox Code Playgroud)

服务开始忽略那件事.是的,我正在以调试模式构建项目.

如果我将其更改为Debugger.Break()- 服务刚刚失败,仍然没有附加调试器的对话框.

windows-services c#-4.0 windows-8

6
推荐指数
2
解决办法
3762
查看次数

Livereload和Chrome.强制重装

我已经开始使用LiveReload及其Chrome扩展程序,这大大改善了我的工作流程.但有一件事我注意到:有时Chrome仍会继续加载缓存版本,而我的最新更改并未反映出来.

如何强制它始终转储缓存并执行"硬重载"?

应用程序在Visual Studio Web开发服务器上运行(我不知道这是否重要)

google-chrome livereload

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

从另一个模块获取对象(控制器,服务或指令的功能)

是否可以访问位于同一模块或不同模块中的功能?

就像是:

var fooDir = angular.module("directives").get("foo")
Run Code Online (Sandbox Code Playgroud)

… 要么:

var myCtrl = angular.module("app").controllers["myCtrl"]
Run Code Online (Sandbox Code Playgroud)

我想服务我们可以使用注射器:

inj = angular.injector(['myServicesModule'])
$myService = inj.get('$myService')
Run Code Online (Sandbox Code Playgroud)

...但是它适用于控制器和指令吗?

dependency-injection angularjs

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

用Karma,browserify和Coffeescript测试覆盖率

我有麻烦添加测试代码覆盖率,我使用Karma和添加到Karma的文件已经与browserify捆绑在一起,所以在karma.conf.coffee它看来是这样的:

files: [
   { pattern:'bin/public/client/app.js', served:yes: included:yes }
   { pattern:'src/lib/vendor/angular-mocks/angular-mocks.js', served:yes: included:yes }
   { pattern:'bin/tests.js', served:yes: included:no }
]
Run Code Online (Sandbox Code Playgroud)

这适用于运行测试,但不适用于覆盖范围

我正在使用karma-coveragenpm包,这个:

preprocessors: 'bin/public/client/app.js':['coverage']

reporters: ['progress','coverage']
Run Code Online (Sandbox Code Playgroud)

实际上确实创建了覆盖率统计文件,但这些文件是完全错误的,因为它会使从node_modules带来的浏览器部分变得更糟(因为我没有测试来覆盖那些)

理想情况下,我必须收集browserify生成的源映射,并针对这些映射运行覆盖,但browserify将源映射嵌入到.js文件中.使用karma-sourcemap-loader让我看到测试的原始coffeescript文件,在调试时(由于某种原因它只适用于ChromeCanary,但它可以工作)

我尝试过这样做preprocessors: 'src/client/**/*.coffee':['coverage'],但是没有任何统计数字表示"无数据显示"

你有什么想法?

UPD:

我想通过运行browserify-istanbul转换后coffeeify,这给了我这样的好图:在此输入图像描述

现在,我需要以某种方式从中删除app.js,因为它真的没关系,真的很困惑

UPD:

哦,而不是javascript我必须提供咖啡文件:

preprocessors : {
    'bin/tests.js': ['sourcemap']
    'src/client/**/*.coffee': ['coverage']
}
Run Code Online (Sandbox Code Playgroud)

code-coverage coffeescript browserify karma-runner istanbul

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

绑定在ng-if内停止输入

由于某种原因,绑定不适ng-if用于指令中块内的输入

所以这个,不起作用:

app.directive 'foo', ->
    restrict: 'E'
    scope:
       type:'='
    template: "<input ng-if=\"type === 'string'\" ng-model='filterText'>
                  <div> {{filterText}} </div>"


<foo type="'string'" />
Run Code Online (Sandbox Code Playgroud)

它在指令之外或没有指令时工作正常ng-if.在ng-if没有帮助的情况下包装div内部的输入.这是一个错误吗?

jsbin链接

angularjs

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

关于CapsLock的警告

我有一个DataGridTemplateColumn与DataTemplate作为PasswordBox.

我想警告用户是否切换了CapsLock.

private void PasswordBox_PasswordChanged(object sender, RoutedEventArgs e)
    {
        if (Keyboard.GetKeyStates(Key.CapsLock) == KeyStates.Toggled)
        {  
         ...
Run Code Online (Sandbox Code Playgroud)

现在,我需要在这里提出一些PopUp.我不知道该怎么做.请帮帮我.

我试着像这样玩ToolTip:

((PasswordBox)sender).SetValue(ToolTipService.InitialShowDelayProperty, 1);
((PasswordBox)sender).ToolTip = "CAPS LOCK";
Run Code Online (Sandbox Code Playgroud)

但只有当鼠标光标悬停在那里并且我需要一个独立的Popup时它才有效.

wpf capslock wpfdatagrid

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

EntityFramework如何覆盖属性

我刚开始在VS2010中使用EF.那东西只是amazin'.

我坦白地说不明白.例如,我有EntityType属性,它们是从数据库结构生成的.现在,我必须在我的代码中简单地覆盖该属性.我不需要将属性的值保存回DB,但每次从DB读取它时都应该用运行时计算的值代替.

当然我可以根据我的EntityType创建派生类,但我已经尝试过并发现有点困难,我不确定这是一种正确的方法.无论如何,即使我尝试将整个EntityType更改为Abstract,该死的Visual Studio也不想验证它并说出如下内容:

"错误2078:EntityType'AssetsModel.Asset'是Abstract,只能使用IsTypeOf进行映射." "错误2063:必须在"资产"的集合映射中映射至少一个属性"

这到底是什么意思我不知道..

有任何想法吗?

entity entity-framework

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

检查SQL服务器可用性的最快方法是什么?

检查SQL服务器是否存在的最佳方法是什么?

我正在尝试Microsoft.SqlServer.Management.Smo.Server.PingSqlServerVersion(),如果服务器存在且可用,它可以正常工作.但如果没有这样的服务器,它有点慢.

如果服务器存在,是否有足够快的方法来检查甚至没有定义用户凭证(只有服务器名称)?

你建议使用什么?

c# sql-server smo

5
推荐指数
2
解决办法
8369
查看次数