使用进程间同步对象同步2个进程 – Mutex或AutoResetEvent

请考虑以下情形:我正在运行我的应用程序,在执行期间,必须运行另一个进程,并且只有在第二个进程完成内部特定初始化之后,我的第一个进程才能继续。 例如: … // Process1 code does various initializations here Process.Start(“Process2.exe”); // Wait until Process2 finishes its initialization and only then continue (Process2 doesn’t exit) … 我看到几个选项: Mutex – 在考虑进程间通信时会自动想到Mutex,但是,我看不到让Process1等待他自己生成的互斥锁的方法。 我可以使Process2创建一个互斥锁并等待Process1直到创建Mutex(使用轮询和Mutex.OpenExisting函数) AutoResetEvent – 那些对于任务来说是完美的,但是,似乎在.NET下这些不能用于进程间通信。 CreateEvent – 我可以使用P / Invoke并使用Win32 CreateEvent函数。 从理论上讲,它可以为我提供我需要的一切。 但是,如果可能的话,我宁愿不使用本机函数。 使用外部文件 – 最简单的方法就是使用一些操作系统外部对象(文件,注册表等)。 然而,这似乎相当hacky。 我很高兴听到你对这个案子的意见。 谢谢!

Parallel.Foreach +收益率回报?

我想用这样的并行循环处理一些东西: public void FillLogs(IEnumerable computers) { Parallel.ForEach(computers, cpt=> { cpt.Logs = cpt.GetRawLogs().ToList(); }); } 好的,它工作正常。 但是如果我想让FillLogs方法返回一个IEnumerable怎么办? public IEnumerable FillLogs(IEnumerable computers) { Parallel.ForEach(computers, cpt=> { cpt.Logs = cpt.GetRawLogs().ToList(); yield return cpt // KO, don’t work }); } 编辑 似乎不可能……但我使用这样的东西: public IEnumerable FillLogs(IEnumerable computers) { return computers.AsParallel().Select(cpt => cpt); } 但是我放了cpt.Logs = cpt.GetRawLogs().ToList(); 指令

通过C#代码管理DNS服务器

我需要一些示例代码来通过C#在Microsoft DNS服务器中创建/删除区域和A记录

c#多任务

int a, b, n; … (a, b) = (2, 3); // ‘a’ is now 2 and ‘b’ is now 3 这种事情在C#中真的很有帮助。 在这个例子中,’a’和’b’没有被封装在一起,例如位置的X和Y可能是。 这是否以某种forms存在? 下面是一个不太重要的例子。 (a, b) = n == 4 ? (2, 3) : (3, n % 2 == 0 ? 1 : 2); Adam Maras在评论中表示: var result = n == 4 ? Tuple.Create(2, 3) […]

如何在C#中选择带XPath的节点?

简单的问题,我只想从标签中选择文本。 这就是我所拥有的,但Xpath与任何东西都不匹配。 public static void TestXPath() { string xmlText = “”; xmlText += “”; xmlText += “Normal 1 1 6”; xmlText += “”; XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(new System.IO.StringReader(xmlText)); foreach (XmlNode node in xmlDoc.SelectNodes(“//Template”)) { Console.WriteLine(“{0}: {1}”, node.Name, node.InnerText); } }

什么是C#“使用”指令?

我在代码示例中看到了这个C#using语句: using StringFormat=System.Drawing.StringFormat; 那是什么意思?

C#类订阅自己发布的事件是不是很糟糕?

我可能只是神经质,但我经常发现自己处于发布事件的类的情况下,我觉得从类本身(例如构造函数)中订阅此事件很方便,而不仅仅是订阅外部课程。 这对我来说听起来很合理,但我无法忍受这种拙劣的做法,因为我总是面对这样一个问题:“为什么不执行你在事件处理程序中提供的动作在激活事件的代码中?“ public class Button { public Button() { this.Click += someHandler; // bad practice? } public event EventHandler Click; public void HandleInput() { if (someInputCondition) { // Perform necessary actions here rather than // subscribing in the constructor? this.Click(this, …); } } } 订阅自己的活动有什么缺点吗?

是否可以创建一个接受(可空)值类型和引用类型的C#generics方法?

我想创建一个接受值类型和引用类型参数的简单方法,即int是value,string是reference。 所以这就是我的开始: public bool areBothNotNull(T? p1, T? p2) { return (p1.HasValue && p2.HasValue); } 所以我希望能够像这样使用它: var r1 = areBothNotNull(3, 4); // will be true var r2 = areBothNotNull(3, null); // will be false var r3 = areBothNotNull(“three”, “four”); // will be true var r4 = areBothNotNull(null, “four”); // will be false 但我遇到的第一个问题是 类型’T’必须是不可为空的值类型,以便在generics类型或方法’System.Nullable’中将其用作参数’T’ 为了继续,我向我的方法添加一个struct约束 public […]

WCF Test Client无法添加服务,无法获取元数据

我可以告诉我为什么当我尝试添加服务时出现此错误? 错误:无法从http:// myserver / myapp获取元数据。 如果这是您有权访问的Windows(R)Communication Foundation服务,请检查您是否已在指定地址启用元数据发布。 有关启用元数据发布的帮助,请参阅http://go.microsoft.com/fwlink/?LinkId=65455上的MSDN文档。 WS-Metadata Exchange错误URI: http:// myserver / myapp元数据包含无法解析的引用:’ http:// myserver / myapp ‘。 远程服务器返回意外响应:(405)方法不允许。 远程服务器返回错误:(405)方法不允许.HTTP GET错误URI: http:// myserver / myapp下载’ http:// myserver / myapp ‘时出错。 请求失败,HTTP状态为403:Forbidden。 更新:我已经有以下端点了, 我也设置了服务行为:

我可以inheritance构造函数吗?

我知道在C#中inheritance构造函数是不可能的,但是可能有办法做我想做的事情。 我有一个由许多其他类inheritance的基类,它有一个Init方法,它使用1个参数进行一些初始化。 所有其他inheritance类也需要这个初始化,但我需要为所有这些创建单独的构造函数,如下所示: public Constructor(Parameter p) { base.Init(p); } 这完全违反了DRY原则! 如何在不创建数十个构造函数的情况下初始化所有必需的东西?