这是一个简单的例子:
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)它放在那里它会拧我的ActivityIndicator,冻结主线程,我觉得这将是最糟糕的事情.还有一些Monitor.Wait东西和其他一些东西TaskFactory,但所有这些东西似乎太复杂,无法在简单的场景中使用.
它可能在不同的环境中也有所不同,例如某些方法对WPF应用程序有用,有些对于其他东西以及诸如此类的东西,但应该有一般模式不对吗?
你是怎么做那些家伙的?
如果我使用这样的通用列表:
$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'开头的所有项目?
在我安装完Windows 8之后,完全合法的声明就不再适用了:
#if DEBUG
Debugger.Launch();
#endif
Run Code Online (Sandbox Code Playgroud)
服务开始忽略那件事.是的,我正在以调试模式构建项目.
如果我将其更改为Debugger.Break()- 服务刚刚失败,仍然没有附加调试器的对话框.
我已经开始使用LiveReload及其Chrome扩展程序,这大大改善了我的工作流程.但有一件事我注意到:有时Chrome仍会继续加载缓存版本,而我的最新更改并未反映出来.
如何强制它始终转储缓存并执行"硬重载"?
应用程序在Visual Studio Web开发服务器上运行(我不知道这是否重要)
是否可以访问位于同一模块或不同模块中的功能?
就像是:
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)
...但是它适用于控制器和指令吗?
我有麻烦添加测试代码覆盖率,我使用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) 由于某种原因,绑定不适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内部的输入.这是一个错误吗?
我有一个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时它才有效.
我刚开始在VS2010中使用EF.那东西只是amazin'.
我坦白地说不明白.例如,我有EntityType属性,它们是从数据库结构生成的.现在,我必须在我的代码中简单地覆盖该属性.我不需要将属性的值保存回DB,但每次从DB读取它时都应该用运行时计算的值代替.
当然我可以根据我的EntityType创建派生类,但我已经尝试过并发现有点困难,我不确定这是一种正确的方法.无论如何,即使我尝试将整个EntityType更改为Abstract,该死的Visual Studio也不想验证它并说出如下内容:
"错误2078:EntityType'AssetsModel.Asset'是Abstract,只能使用IsTypeOf进行映射." "错误2063:必须在"资产"的集合映射中映射至少一个属性"
这到底是什么意思我不知道..
有任何想法吗?
检查SQL服务器是否存在的最佳方法是什么?
我正在尝试Microsoft.SqlServer.Management.Smo.Server.PingSqlServerVersion(),如果服务器存在且可用,它可以正常工作.但如果没有这样的服务器,它有点慢.
如果服务器存在,是否有足够快的方法来检查甚至没有定义用户凭证(只有服务器名称)?
你建议使用什么?
angularjs ×2
c# ×2
c#-4.0 ×2
browserify ×1
capslock ×1
coffeescript ×1
entity ×1
istanbul ×1
karma-runner ×1
livereload ×1
powershell ×1
smo ×1
sql-server ×1
windows-8 ×1
wpf ×1
wpfdatagrid ×1