小编Mik*_*liy的帖子

可以从TPL任务派生从方法返回更多细节吗?

我的原始方法如下:

string DoSomeWork();
Run Code Online (Sandbox Code Playgroud)

方法DoSomeWork在其他线程上启动一些工作并返回执行ID(只是随机字符串).稍后我可以通过给定的执行ID查询结果.重点是在作业完成之前使执行ID可用.

现在我想更改签名以返回Task,因此用户可以等待.

Task DoSomeWork();
Run Code Online (Sandbox Code Playgroud)

同时我仍然需要返回执行ID(例如用于跟踪),我看到几个选项.首先是if out参数,第二个是返回带有执行ID和任务的元组(在C#中看起来不是最好的选项),第三个是我真正想要问的.

如果我将创建将从Task类派生的类,该怎么办:

public class ExtendedTask : Task
{
     public string ExecutionID {get; set;}
}
Run Code Online (Sandbox Code Playgroud)

这看起来不错吗?或者最好决定其他选择?

PS在BCL中有一些派生自Task类.

更新,似乎我无法定义这个明确的enouthg.但是我需要在作业完成之前访问ExecutionID,因此我无法使用Task.Result.

.net c# asynchronous task-parallel-library async-ctp

13
推荐指数
2
解决办法
4839
查看次数

运行PowerShell时" - <"是什么意思?

推荐的运行脚本的方法是

powershell.exe -NonInteractive -Command " & some.ps1 "
Run Code Online (Sandbox Code Playgroud)

但是,例如TeamCity PowerShell runner使用:

powershell.exe -NonInteractive -Command - < some.ps1
Run Code Online (Sandbox Code Playgroud)

我不知道" - <"是什么意思,也无法找到有关主题的任何信息.有帮助吗?

powershell teamcity

11
推荐指数
1
解决办法
1038
查看次数

NHibernate中只读列表的最佳实践是什么?

我正在研究的域模型具有根聚合和子实体.类似下面的代码:

class Order
{
   IList<OrderLine> Lines {get;set;}
}

class OrderLine
{
}
Run Code Online (Sandbox Code Playgroud)

现在我希望我的订单控制线.像这样的东西:

class Order
{
   OrderLine[] Lines {get;}

   void AddLine(OrderLine line);
}
Run Code Online (Sandbox Code Playgroud)

目前我们使用以下模式:

class Order
{
   private IList<OrderLine> lines = new List<OrderLine>();
   OrderLine[] Lines {get {return this.lines;}}

   void AddLine(OrderLine line)
   {
      this.orders.Add(line);
   {
}
Run Code Online (Sandbox Code Playgroud)

NHibernate直接映射到lines字段.

现在问题......

  • 你在这种情况下练习什么?
  • 有没有人使用方法:public IEnumerable GetLines()
  • 您使用什么作为财产的返回类型?可能是ReadOnlyCollection或IEnumerable;
  • 可能这不是最好问的地方吗?建议请.

更新:似乎IEnumerable获胜,但解决方案仍然不完美......

.net arrays nhibernate domain-driven-design list

10
推荐指数
2
解决办法
4285
查看次数

在WCF代理的当前程序集中重用类型

VS WCF集成有很好的选项"在refrenced程序集中重用类型".问题是我需要相同的但是对于当前的组件.一些类型已在我的程序集中定义,我需要重用它们.

使用场景:

  1. 我有程序集,在这里有TypeA.
  2. 我添加了服务引用,其中一个方法返回与TypeA完全兼容的类型(属性,名称).
  3. 添加服务引用生成代理,但它在其中重新创建新的TypeA.

在第3步,我需要代理将返回TypeA.不是新的TypeA.

wcf

10
推荐指数
2
解决办法
8430
查看次数

如何在AWS CloudWatch for Log Metric Filter中解析混合文本和JSON日志条目

我试图解析混合文本和JSON的日志条目.第一行是文本表示,下一行是事件的JSON有效负载.其中一个可能的例子是:

2016-07-24T21:08:07.888Z [INFO] Command completed lessonrecords-create
{
  "key": "lessonrecords-create",
  "correlationId": "c1c07081-3f67-4ab3-a5e2-1b3a16c87961",
  "result": {
    "id": "9457ce88-4e6f-4084-bbea-14fff78ce5b6",
    "status": "NA",
    "private": false,
    "note": "Test note",
    "time": "2016-02-01T01:24:00.000Z",
    "updatedAt": "2016-07-24T21:08:07.879Z",
    "createdAt": "2016-07-24T21:08:07.879Z",
    "authorId": null,
    "lessonId": null,
    "groupId": null
  }
}
Run Code Online (Sandbox Code Playgroud)

对于此记录,我尝试将Log Metric Filter定义为a)匹配记录b)如果可能,选择数据或维度.

根据AWS docs,JSON模式应如下所示:

{ $.key = "lessonrecords-create" }

但它与任何东西都不匹配.我的猜测是因为在单个日志条目中混合文本和JSON.

因此,问题是:1.是否可以定义与此日志格式匹配的模式?2.是否可以从这种日志格式中提取尺寸,值?3.用模式帮助我做到这一点.

amazon-web-services amazon-cloudwatch amazon-cloudwatchlogs

10
推荐指数
1
解决办法
1997
查看次数

如何在TopShelf中为服务指定命令行选项

我使用命令行参数将一些配置传递给Windows服务(它将是几个具有不同命令行的实例).

我的代码看起来像这样:

HostFactory.Run(x =>                                 
{
    x.Service<MyHost>(s =>
    {                    
        s.ConstructUsing(name => new MyHost());
        s.WhenStarted(tc => tc.Start());             
        s.WhenStopped(tc => tc.Stop());              
    });
    x.AddCommandLineDefinition("sqlserver", v => sqlInstance = v);
}); 
Run Code Online (Sandbox Code Playgroud)

当我安装服务时,我使用:

myhost.exe install -sqlserver:someinstance
Run Code Online (Sandbox Code Playgroud)

遗憾的是,sqlserver命令行选项仅在安装阶段可用,并且不会转到服务的参数.所以当我运行服务时,我没有得到我需要的参数值.

有没有办法修改TopShelf启动的服务命令行?

.net topshelf

9
推荐指数
2
解决办法
6946
查看次数

如何将html文件的内容包含到jenkins email-ext的模板中?

我正在使用Jenkins和email-ext发送构建通知.Build生成在out目录中存储为简单HTML的小型自定义报告.现在我可以轻松地将此报告附加到电子邮件中,但我想要的是将此报告呈现给电子邮件正文本身.我知道我可以编写自己的果冻模板,但这需要访问构建服务器(安装果冻脚本),我也想避免这种情况.所以我的问题是:

  1. 我可以将任意文件的内容(在构建期间生成)包含到Email-Ext插件的Content字段中吗?
  2. 如果我不能,在詹金斯发送这样的报告最简单的方法是什么?

jenkins email-ext

9
推荐指数
2
解决办法
1万
查看次数

用于Windows 8上的开发目的的LDAP服务器

我需要测试从我的应用程序到LDAP的连接.我需要一些我可以轻松安装的东西(首选是xcopy).

多年前,我正在使用Active Directory应用程序模式(ADAM)来实现此目的.但它在Windows 8上不受支持.给我有趣的错误消息:

You do not have permission to update Windows. Please contact your system administrator.
Run Code Online (Sandbox Code Playgroud)

现在,它看起来像Active Directory轻量级目录服务(AD LDS).但是又一次:

Installer encountered an error: 0x80096002
The certificate for the signer of the message is invalid or not found.
Run Code Online (Sandbox Code Playgroud)

所以有两个问题:

  1. 是否可以在Windows 8上使用AD LDS
  2. 还有其他选择吗?例如,快速搜索OpenLDAP.

.net adam ldap adlds

8
推荐指数
2
解决办法
5842
查看次数

如何在Terraform中的data.archive_file zips文件夹之前运行命令?

我尝试使用Terraform实现AWS Lambda函数。

我只是拥有null_resource本地供应商,并且resource.archive_file在所有准备工作完成后都压缩了源代码。

resource "null_resource" "deps" {

  triggers = {
    package_json = "${base64sha256(file("${path.module}/src/package.json"))}"
  }

  provisioner "local-exec" {
    command = "cd ${path.module}/src && npm install"
  }
}

resource "archive_file" "function" {
    type = "zip"
    source_dir = "${path.module}/src"
    output_path = "${path.module}/function.zip"

    depends_on = [ "null_resource.deps" ]
}
Run Code Online (Sandbox Code Playgroud)

最近对Terraform的更改已弃用resource.archive_file,因此data.archive_file应改用。不幸的是,它data在资源之前执行,因此从依赖资源中创建本地预配器在创建zip之后就被称为。因此,下面的代码不再发出警告,但是根本不起作用。

resource "null_resource" "deps" {

  triggers = {
    package_json = "${base64sha256(file("${path.module}/src/package.json"))}"
  }

  provisioner "local-exec" {
    command = "cd ${path.module}/src && npm install"
  }
}

data …
Run Code Online (Sandbox Code Playgroud)

terraform

8
推荐指数
2
解决办法
2016
查看次数

为什么Microsoft .NET Framework客户端配置文件是256 MB?

Microsoft .NET Framework客户端配置文件脱机安装程序 - 255.6 MB.不应该是27MB左右吗?

这里包中的最大文件列表(大小,以字节为单位).

  1. dotnetfx35.exe(242 743 296)
  2. DotNetFx20Client_Package_x86.exe(14 466 600)
  3. DotNetFx30Client_Package_x86.exe(8 328 232)
  4. DotNetFx35Client_Package_x86.exe(935 976)

所以可能是正确的问题是为什么全标记的.NET 3.5包在这里?我不知道.

.net .net-client-profile

7
推荐指数
1
解决办法
1021
查看次数