我只是花了上个星期的时间来弄清楚如何从C#执行C ++代码作为我日常工作的一部分。 我们花了很长时间才弄明白,但最后的解决办法很简单。 现在我很好奇…从C#调用Haskell有多难? (注意: 从 C#调用Haskell,而不是相反,所以主要的可执行文件是C#)。 如果真的很难,我不会打扰。 但是如果相当容易,我可能不得不去玩一玩。 基本上,我们写了一些C ++代码。 在Windows上它被编译成一个DLL,在Linux上被编译成一个共享对象( *.so )。 然后在C#端,你做了一个DllImport并且写了一些手动的内存pipe理代码,如果你试图通过任何不平凡的东西。 (例如,数组,string等) 我知道GHC应该支持在两个平台上构build共享库,但我不确定技术细节。 什么是导出东西的语法,调用者必须做任何特别的初始化DLL第一? foobar :: FilePath -> IO Int32 :假设存在一个函数foobar :: FilePath -> IO Int32 。 有人可以把一个小草图放在一起,显示: 我需要写出什么样的Haskell声明才能将其暴露给外部世界。 我如何告诉GHC构build一个自包含的DLL / SO文件。 调用者需要做的任何特殊的事情,超出了绑定foobar本身的通常过程。 我并不担心C#端的实际语法, 我想我已经或多或less地困惑了。 PS我简单地看过hs-dotnet ,但这似乎是Windows特定的。 (即,不会与Mono一起工作,所以不能在Linux上工作。)
我的应用程序中有一个问题:在某些时候,主线程的SynchronizationContext.Current变为空。 我无法在孤立的项目中重现相同的问题。 我真正的项目是复杂的, 它混合了Windows窗体和WPF,并调用WCF Web服务。 据我所知,这些都是可以与SynchronizationContext进行交互的系统。 这是我孤立项目的代码。 我真正的应用程序做类似的东西。 但是,在我的真实应用程序中,在继续执行任务时,主线程上的SynchronizationContext.Current为null。 private void button2_Click(object sender, EventArgs e) { if (SynchronizationContext.Current == null) { Debug.Fail("SynchronizationContext.Current is null"); } Task.Factory.StartNew(() => { CallWCFWebServiceThatThrowsAnException(); }) .ContinueWith((t) => { //update the UI UpdateGUI(t.Exception); if (SynchronizationContext.Current == null) { Debug.Fail("SynchronizationContext.Current is null"); } }, CancellationToken.None, TaskContinuationOptions.OnlyOnFaulted, TaskScheduler.FromCurrentSynchronizationContext()); } 什么可能导致主线程的SynchronizationContext.Current变为空? 编辑: @Hans要求堆栈跟踪。 这里是: […]
我目前有一个GUI的应用程序。 是否有可能从命令行使用这个相同的应用程序(没有GUI和使用参数)。 或者我必须为命令行工具创build一个单独的.exe(和应用程序)?
背景: 我有一个非常大的OData模型,目前使用WCF数据服务(OData)来公开它。 不过,微软已经表示WCF数据服务已经死亡 ,Web API OData是他们将要进行的方式。 所以我正在研究如何使Web API OData和WCF数据服务一样工作。 问题设置: 模型的某些部分不需要保护,但有一部分可以。 例如,客户列表需要安全来限制谁可以阅读,但是我有其他列表,比如产品列表,任何人都可以查看。 Customers实体有许多可以达到的关联。 如果您计算2+级关联,则可以通过数百种方式(通过关联)访问客户。 例如Prodcuts.First().Orders.First().Customer 。 由于客户是我系统的核心,您可以从大多数任何实体开始,最终将您的方式与客户列表联系起来。 WCF数据服务有一种方法可以让我通过这样的方法把安全性放在一个特定的实体上: [QueryInterceptor("Customers")] public Expression<Func<Customer, bool>> CheckCustomerAccess() { return DoesCurrentUserHaveAccessToCustomers(); } 当我看Web API的OData,我没有看到这样的事情。 另外我非常担心,因为我所做的控制器似乎并没有被召唤,当一个协会是遵循的。 (这意味着我不能把安全性放在CustomersController 。) 我担心,我将不得不设法列举协会可以如何得到客户,并在每一个方面安全的方式。 题: 有没有一种方法可以将安全性放在Web API OData的特定实体上? (没有必要列举所有可能以某种方式扩展到该实体的关联)
在MVC 5中,您可以使用HTTP代码来引发HttpException,并将其设置为如下所示: throw new HttpException((int)HttpStatusCode.BadRequest, "Bad Request."); HttpException在ASP.NET 5 / MVC 6中不存在。什么是等效代码?
例如c ++ 0x接口 我很难搞清楚什么时候使用这些东西(cv,mutex和lock)。 任何人都可以请解释或指向一个资源? 提前致谢。
由于使用Visual Studio 2012 RC,因此在剃刀视图中使用可移植类库(.net 4.5&metroconfiguration文件)中的类时,会出现HttpCompileException。 例外:(德语翻译成英文,对不起) System.Web.HttpCompileException (0x80004005): c:\Users\user\AppData\Local\Temp\Temporary ASP.NET Files\root\1995167a\126b7c4d\App_Web_index.cshtml.1fbcdbb1.zaniprm5.0.cs(29): error CS0012: The type 'System.Object' is not in a referenced assembly is defined. Add a reference to the Assembly "System.Runtime, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a" added. at System.Web.Compilation.AssemblyBuilder.Compile() System.Web.Compilation.BuildProvidersCompiler.PerformBuild() System.Web.Compilation.BuildManager.CompileWebFile(VirtualPath virtualPath) … 解决scheme结构 可移植类库(.net 4.5&metro profile) 公共类User {…} MVC 4(.net […]
我想检查一个给定的目录是否存在。 我知道如何在Windows上做到这一点: BOOL DirectoryExists(LPCTSTR szPath) { DWORD dwAttrib = GetFileAttributes(szPath); return (dwAttrib != INVALID_FILE_ATTRIBUTES && (dwAttrib & FILE_ATTRIBUTE_DIRECTORY)); } 和Linux: DIR* dir = opendir("mydir"); if (dir) { /* Directory exists. */ closedir(dir); } else if (ENOENT == errno) { /* Directory does not exist. */ } else { /* opendir() failed for some other reason. […]
我想编写一个简单的C#应用程序来监视线路inputaudio,并给我当前(好,滚动平均)每分钟的节拍。 我见过这个gamedev文章 ,这是绝对没有帮助。 我经历了,试图实现他在做什么,但它只是不工作。 我知道必须有大量的解决scheme,因为很多DJ软件都是这样做的,但是我找不到任何开源库或者自己做的说明。
我正在写一个小的I / O库来协助一个更大的(爱好)项目。 该库的一部分对文件执行各种function,通过FileStream对象读取/写入。 在每个StreamReader.Read(…)传递中, 我发布了一个将在主应用中使用的事件来显示进度信息。 在循环中进行的处理是有效的,但不是太耗时(例如,它可能只是一个简单的文件副本,或者可能涉及encryption…)。 我的主要问题是:什么是最好的内存缓冲区大小使用? 考虑物理磁盘布局,我可以select2k,这将覆盖CD扇区大小,是512字节硬盘扇区的好几倍。 在抽象树的上方,你可以select一个更大的缓冲区,一次读取整个FAT簇。 我意识到今天的个人电脑,我可以去寻找更多的内存饥饿的选项(例如几个MiB),但是随后我增加了UI更新之间的时间,并且用户感觉到响应性较差的应用程序。 另外,我最终希望提供一个类似的FTP / HTTP服务器上的文件(通过本地networking/快速的DSL)的接口。 什么是最好的内存缓冲区大小(再次,感知响应性能与性能之间的“最佳情况”权衡)?