C#语音识别

我现在正在制作智能家居控制系统,我有一点问题。 我正在考虑将Cosmos用于基本系统,并为其添加所需的命名空间库,但由于通常的System.Speech.Recognition命名空间过分依赖于Windows Speech API,我不得不忘记使用它。 所以我的问题是,是否有任何(如果可能的话免费)语音识别和/或语音合成器库用于C#,具有以下内容: 支持多语言发言 从语音样本中提取文本内容 用可选择的(或用户编写的)语音模式(语音)合成语音 一般用法,非Windows依赖库是最好的,当然,如果它也是免费的。

在C#中更新foreach循环中的struct

我有这个代码(C#): using System.Collections.Generic; namespace ConsoleApplication1 { public struct Thing { public string Name; } class Program { static void Main(string[] args) { List things = new List(); foreach (Thing t in things) // for each file { t.Name = “xxx”; } } } } 它不会编译。 错误是: Cannot modify members of ‘t’ because it is a […]

读取属于另一个应用程序的配置文件的最简单方法

除了使用原始XML之外,在.NET中有一种简单的方法可以打开和读取属于另一个程序集的配置文件……? 我不需要写它,只需从中获取几个值。

使用COM互操作从BS ++到C#编组BSTR

我有一个用C ++编写的进程外COM服务器,它由一些C#客户端代码调用。 其中一个服务器接口上的方法将大型BSTR返回给客户端,我怀疑这会导致内存泄漏。 该代码有效,但我正在寻找有关编组BSTR的帮助。 简化一下,服务器方法的IDL是 HRESULT ProcessRequest([in] BSTR request, [out] BSTR* pResponse); 并且实现如下: HRESULT MyClass::ProcessRequest(BSTR request, BSTR* pResponse) { USES_CONVERSION; char* pszRequest = OLE2A(request); char* pszResponse = BuildResponse(pszRequest); delete pszRequest; *pResponse = A2BSTR(pszResponse); delete pszResponse; return S_OK; } A2BSTR在内部使用SysAllocStringLen()分配BSTR。 在C#客户端中,我只需执行以下操作: string request = “something”; string response = “”; myserver.ProcessRequest(request, out response); DoSomething(response); 这样做,因为请求字符串被发送到COM服务器并且正确的响应字符串被返回给C#客户端。 但是每次往返服务器都会泄漏服务器进程中的内存。 crt泄漏检测支持显示crt堆上没有重大泄漏,所以我怀疑泄漏是用IMalloc分配的。 […]

将字符串列表转换为单个字符串

List MyList = (List)Session[“MyList”]; MyList包含如下值: 12 34 55 23 。 我尝试使用下面的代码,但值消失了。 string Something = Convert.ToString(MyList); 我还需要用逗号(“ , ”)分隔每个值。 如何将List Mylist转换为string ?

以编程方式比较word文档

我需要比较两个办公文档,在这种情况下是两个word文档并提供差异,这有点类似于SVN中显示的内容。 不是那么大,但至少能够突出差异。 我尝试使用办公室COM DLL,并得到了这个… object fileToOpen = (object)@”D:\doc1.docx”; string fileToCompare = @”D:\doc2.docx”; WRD.Application WA = new WRD.Application(); Document wordDoc = null; wordDoc = WA.Documents.Open(ref fileToOpen, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); wordDoc.Compare(fileToCompare, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); 有关如何进一步处理的任何提示? 这将是一个具有大量点击的Web应用程序。 使用office com对象是正确的方法,还是有其他我可以看的东西?

C#使用不同的用户凭据访问活动目录

我们刚刚为用户提供了一个新的用户创建应用程序。 但是,这些用户需要能够通过应用程序创建用户,即使他们自己没有创建用户的权限。 在C#中,您如何模拟其他用户才能拥有此function。 此应用程序主要使用System.DirectoryServices 。 代码段: DirectoryEntry dEntry = new DirectoryEntry(“LDAP://OU=”); DirectorySearcher dSearcher = new DirectorySearcher(dEntry); //filter just user objects dSearcher.SearchScope = SearchScope.Subtree; dSearcher.Filter = “(&(objectClass=user)(mail=” + excel_Holding_Table.Rows[i][“EmailAddress”].ToString() + “))”; dSearcher.PageSize = 1000; sResults = dSearcher.FindAll();

.NET ref参数是线程安全的,还是容易受到不安全的multithreading访问?

编辑介绍: 我们知道C#中的ref参数传递对变量的引用 ,允许在被调用的方法中更改外部变量本身。 但是引用的处理方式与C指针非常相似(通过对该参数的每次访问读取原始变量的当前内容,并在对参数进行每次修改时更改原始变量),或者被调用的方法是否依赖于对该参数的一致引用通话时间? 前者提出了一些线程安全问题。 特别是: 我在C#中编写了一个静态方法,它通过引用传递一个对象: public static void Register(ref Definition newDefinition) { … } 调用者提供一个已完成但尚未注册的Definition对象,经过一些一致性检查后,我们“注册”他们提供的定义。 但是,如果已经有一个具有相同密钥的定义,则它无法注册新密钥,而是将其引用更新为该密钥的“官方” Definition 。 我们希望这是严格的线程安全,但我想到了一个病态场景。 假设客户端(使用我们的库)以非线程安全的方式共享引用,例如使用静态成员而不是局部变量: private static Definition riskyReference = null; 如果一个线程设置riskyReference = new Definition(“key 1”); ,填写定义,并调用我们的Definition.Register(ref riskyReference); 而另一个线程也决定设置riskyReference = new Definition(“key 2”); ,我们保证在我们的Register方法中,我们正在处理的newDefinition引用不会被其他线程修改(因为对象的引用被复制并在我们返回时将被复制出来吗?),或者可以线程在执行过程中替换我们上面的对象(如果我们引用指向原始存储位置的指针???),从而打破我们的理智检查? 请注意,这与对底层对象本身的更改不同,这对于引用类型(类)当然是可能的,但可以通过该类中的适当锁定来轻松防范。 但是,我们不能保护对外部客户端变量空间本身的更改! 我们必须在方法的顶部创建我们自己的参数副本并覆盖底部的参数(例如),但这对于编译器来说似乎更有意义,因为处理的是精神错乱不安全的参考。 因此,我倾向于认为引用可以被编译器复制并复制出来,以便该方法处理对原始对象的一致引用(直到它在需要时更改自己的引用),而不管是什么发生在其他线程上的原始位置。 但是我们在文档和参考参数的讨论中找不到关于这一点的确定答案。 有人可以通过明确的引用来缓解我的担忧吗? 编辑结论: 在用multithreading代码示例(感谢Marc!)确认它并进一步思考之后,它确实是我自己所担心的非自动线程安全行为。 “ref”的一点是通过引用传递大结构而不是复制它们。 另一个原因是你可能想要设置一个变量的长期监控,并且需要传递对它的引用,这将看到变量的变化(例如,在null和活动对象之间进行更改),这是一个自动复制 – in / copy-out不允许。 […]

确保控制器在Unity中具有无参数的公共构造函数

我在控制器中遇到了这个问题: 尝试创建类型为“ * .WebMvc.Controllers.HomeController”的控制器时发生错误。 确保控制器具有无参数的公共构造函数。 找到ApiController的解决方案,但没有找到任何关于普通控制器的信息。 从头开始创建新的MVC 4项目。 HomeController.cs: public class HomeController : Controller { private IAccountingUow _uow; public HomeController(IAccountingUow uow) { _uow = uow; } UnityDependencyResoler.cs: public class UnityDependencyResolver : IDependencyResolver { private IUnityContainer _container; public UnityDependencyResolver(IUnityContainer container) { _container = container; RegisterTypes(); } public object GetService(Type serviceType) { try { return _container.Resolve(serviceType); }catch […]

为什么C#和VB有generics? 他们提供了什么好处? generics,FTW

来自维基百科 : 通用编程是一种计算机编程风格,其中算法是根据待指定的后续类型编写的,然后在需要时作为参数提供的特定类型进行实例化,并由1983年出现的Ada开创。这种方法允许编写常用function或类型,仅在使用时操作的类型集不同,从而减少重复。 generics提供了定义稍后指定的类型的能力。 您不必将项目转换为类型以使用它们,因为它们已经被键入。 为什么C#和VB有generics? 他们提供了什么好处? 使用它们有什么好处? 还有哪些其他语言也有仿制药?