Tag: mono

单声道下的FileSystemWatcher – 观察子目录

我有个问题。 我在FileSystemWatcher上编写了一个包装器,用于检测根文件夹及其所有子文件夹中的更改。 没有什么花哨: FileSystemWatcher watcher = new FileSystemWatcher (); watcher.Path = this.Root; watcher.IncludeSubdirectories = true; watcher.NotifyFilter = NotifyFilters.LastWrite | NotifyFilters.LastAccess | NotifyFilters.DirectoryName | NotifyFilters.FileName; watcher.Changed += new FileSystemEventHandler (watcher_Changed); watcher.Deleted += new FileSystemEventHandler (watcher_Deleted); watcher.Created += new FileSystemEventHandler (watcher_Created); watcher.Renamed += new RenamedEventHandler (watcher_Renamed); watcher.EnableRaisingEvents = true; 在.NET中,在Windows下,它就像一个魅力。 但是当我将代码移植到mono并在OSX下运行代码时,它只能在根文件夹中正常工作。 我现在注意到的问题: 在观察者启动时,根目录下已存在的文件夹内的操作不会引发事件 我通过EventArgs.FullPath属性获得的路径不正确(当我将文件复制到path_to_root / some / […]

代码只有在使用调试器单步执行时才能正确运行?

可能重复: 随机数生成器仅生成一个随机数 不久前我对此感到有些困惑。 我有以下代码: public blockType generateRandomBlock() { Random random = new Random(); int makeBlockOfType = random.Next(0, 100); blockType t = blockType.normal; if (makeBlockOfType = 60) { t = blockType.blue; } else if (makeBlockOfType > 80 && makeBlockOfType 95 && makeBlockOfType <= 100) { t = blockType.green; } return t; } 相当简单,它根据随机生成的数字(基于系统时间)返回enum值。 不幸的是,由于一些奇怪的原因,我有所有的块都是一种颜色或另一种颜色,即使这是针对每个块进入游戏。 但是,当我使用调试器逐步执行此操作,然后在运行后查看结果时,我看到块现在基于提供的机会多色。 我对为什么会发生这种情况感到有些困惑。 […]

.NET FileSystemWatcher在Mac OS上与Mono一起使用吗?

我可以使用FileSystemWatcher编写Microsoft .NET程序,并期望它在Mac OS X下使用Mono而无需更改吗?

单声道 – Debug.Assert不起作用

我有这个程序: namespace TodoPlus { using System.Diagnostics; public class LameProg { public LameProg() {} public static void Main(string[] args) { int a = 2; int b = 3; Debug.Assert(a == b, “Bleh”); System.Console.WriteLine(“Haha it didn’t work”); } } } 不知何故,Debug.Assert无效。 我正在使用Mono 2.10.5,这是我用来编译和执行的: $ dmcs LameProg.cs $ mono ./LameProg.exe 我怎样才能做到这一点? 我希望它与C中的断言宏具有相同的效果,也就是说它应该彻底崩溃程序。 是否可以使用Debug.Assert执行此操作,还是有其他function可以实现此目的? 谢谢。

在Mono上使用自定义SSL客户端证书System.Net.HttpClient

我正在使用NuGet的Microsoft HTTP客户端库 ,我基本上试图在HttpClient中使用X509Certificate2证书进行TLS身份validation。 我试过像这样创建客户端: WebRequestHandler certHandler = new WebRequestHandler () { ClientCertificateOptions = ClientCertificateOption.Manual, UseDefaultCredentials = false }; certHandler.ClientCertificates.Add (this.ClientCertificate); HttpClient client = new HttpClient (certHandler); 但是, certHandler.ClientCertificates失败,因为此getter 未在Mono中实现 ,因此我从中获得了NotImplementedException。 (我不确定为什么那仍然是TODO。) 到目前为止,我运气不好。 任何想法如何在Mono环境中简单地在HttpClient上设置客户端证书?

C#Mono {new Bitmap(“fileName”);}只是挂在OSX上

当尝试使用mono的版本的System.Drawing.Bitmap对象在OSX 10.7.3上加载“.bmp”,“。png”或“.jpg”时,应用程序只会挂起。 我没有得到任何错误,应用程序只是卡在Bitmaps构造函数上… 当我在(Arch)Linux或Windows上运行相同的代码时,一切正常。 public static void Main (string[] args) { using (var bitmap = new Bitmap(“/……/image.bmp”)) { } Console.WriteLine (“Hello World!”);// Never gets here… } 如果我在调试模式下暂停应用程序,它会打开“反汇编”窗口并显示它停留在这一行: call Status System.Drawing.GDIPlus:GdiplusStartup (UInt64, GdiplusStartupInput, GdiplusStartupOutput) 注意:在调试模式下暂停应用程序几次后,它“神奇地”开始工作。 我承诺我没有更改任何代码。 谁知道什么可以导致“System.Drawing.GDIPlus”挂起所以我知道如何避免它? 是否有单声道的codex设置文件或可能有垃圾箱的东西?

单声道上的任务并行库实现?

Mono是否实现了Task Parallel库? 如果是这样,.NET和mono之间的性能如何比较。

使用mono / nunit-console / 4在Mac OS X控制台上运行测试

我安装了Max OS X 10.11.1,上面装有Xamarin。 我编写了简单的测试类,只是为了测试在Mac OS X和Ubuntu上运行的Nunit测试,类实际上有一个返回字符串的方法: using System; namespace testing_project { public class EmptyClass { public EmptyClass () { } static void Main(string[] args) { } public string helloWorld() { return “Hello World!”; } } } 我有一个NUnit类来测试我的EmptyClass: using System; using NUnit.Framework; namespace testing_project { [TestFixture] public class EmptyClassTest { [Test] public void testHelloWorld() { […]

Mono ThreadPool并发问题

我写了一个使用ThreadPool进行multithreading处理的软件。 ThreadPool.SetMinThreads(128, 128); ThreadPool.SetMaxThreads(512, 512); for (int i = 0; i { Console.Write(“!”); Thread.Sleep(1000); Console.Write(“.”); }, null); } 在每个线程内部,我执行阻塞网络操作(使用http)。 围绕阻塞网络模型而设计的软件我无法转向非阻塞1线程I / O. 它在Windows平台上运行完美,每个核心可以使用128-512个线程,没有任何问题,所有工作都应该工作。 但当我转向单声道时,我看到了一些非常奇怪的行为。 我不能让每个CPU核心运行多个线程,我可以得到 – 每个核心1个线程,无论我在SetMinThreads / SetMaxThreads中指定了什么。 在Linux下使用.NET 4 / 4.5,MONO版本3.2.1以及我之前系统上的一些旧版本。 顺便说一句,普通线程代码运行良好,例如,这给出了所需的结果: for (int i = 0; i { Console.Write(“!”); Thread.Sleep(1000); Console.Write(“.”); }); t.Start(); }

在Mac上部署没有Framework的Mono应用程序

我有一个#program,在Mono和OSX下运行良好,我也能够为该程序创建一个app-directory。 现在我想分发它,但我不想强迫用户安装mono,因为这在Mac下是不寻常的(并且有一些副作用,我想避免)。 我已经尝试使用mkbundle构建一个包,但mkbundle在Mac下无法正常工作。 我应该补充一点,我使用的是GTK。 在Mac下构建一个完全独立的应用程序的最简单方法是什么? 有什么好的教程吗? 有没有一个好工具可以帮忙?