Tag: c ++

在RunTime上即时更改应用程序语言

我目前正在开发一个metro应用程序,用户可以在运行时更改当前语言,并且所有加载的自定义控件都必须更新有关新语言的文本。 问题是,当我使用以下代码更改语言时,应用程序语言会更改,但只有在重新启动应用程序时才更新文本,因为已经缓存的页面和控件已被缓存。 LocalizationManager.UICulture = new System.Globalization.CultureInfo((string)((ComboBoxItem)e.AddedItems[0]).Tag); Windows.Globalization.ApplicationLanguages.PrimaryLanguageOverride = ((ComboBoxItem)e.AddedItems[0]).Tag as String; 如何在运行时强制更新所有自定义控件的文本而不重新启动我的应用程序?

我可以在多个查询中拆分查询或创建并行性来加速查询吗?

我有一个表avl_pool ,我有一个函数可以在地图上找到最接近该(x, y)位置的链接。 该选择的性能非常线性,该function需要~8 ms才能执行。 因此,计算此行选择1000行需要8秒。 或者,正如我在此示例中所示,20.000行需要162秒。 SELECT avl_id, x, y, azimuth, map.get_near_link(X, Y, AZIMUTH) FROM avl_db.avl_pool WHERE avl_id between 1 AND 20000 “Index Scan using avl_pool_pkey on avl_pool (cost=0.43..11524.76 rows=19143 width=28) (actual time=8.793..162805.384 rows=20000 loops=1)” ” Index Cond: ((avl_id >= 1) AND (avl_id <= 20000))" " Buffers: shared hit=19879838" "Planning time: 0.328 ms" "Execution […]

使用IReadOnlyCollection 而不是IEnumerable 来获取参数,以避免可能的多次枚举

我的问题与关于使用IEnumerable vs IReadOnlyCollection 。 我也总是使用IEnumerable将集合作为返回类型和参数公开,因为它既可以是不可变的又是懒惰的执行。 但是,我越来越关注我的代码中的地方的扩散,我必须枚举一个参数,以避免ReSharper给出的可能的多个枚举警告。 我理解为什么ReSharper建议这一点,我同意它建议的代码(下面)以确保封装(即,没有关于调用者的假设)。 Foo[] arr = col as Foo[] ?? col.ToArray(); 但是,我发现此代码的重复性是污染性的,并且我同意一些消息来源IReadOnlyCollection是一个更好的选择,特别是本文中提出的观点,其中指出: 最近,我一直在考虑返回IEnumerable的优点和缺点。 从好的方面来说,它与接口得到的一样小,所以它让你作为方法作者更灵活,而不是像IList或( 天堂禁止 )一个更重的替代方案。 但是,正如我在上一篇文章中所概述的那样, IEnumerable返回会诱使调用者违反Liskov替换原则 。 他们很容易使用像Last()和Count()这样的LINQ扩展方法,其语义IEnumerable不承诺。 我们需要的是一种更好的方法来锁定一个返回的集合,而不会让这样的诱惑如此突出。 (我想起Barney Fife艰难地学习这一课。) 输入IReadOnlyCollection ,.NET 4.5中的新增function。 它只向IEnumerable添加一个属性: Count属性。 通过承诺计数,你向你的呼叫者保证你的IEnumerable确实有一个终点。 然后他们可以清楚地使用像Last()这样的LINQ扩展方法。 但是,正如观察者可能已经注意到的那样,本文仅讨论如何将IReadOnlyCollection用于返回类型。 我的问题是,相同的论点同样适用于将其用于参数吗? 对此的任何理论思考或评论也将受到赞赏。 事实上,我正在考虑使用IReadOnlyCollection的一般经验法则是,如果使用IEnumerable可能会有多次枚举(相对于ReSharper警告)。 否则,使用IEnumerable 。

使用AutoMapper将DataTable映射到对象(DTO)

我正在尝试使用AutoMappers DynamicMapfunction将DataTable映射到对象(DTO)。 DataTable dt; dt = new dalAllInvestors().InvestorNameSearch(investorNameSearch); // Look at DynamicMap – Urgent List apiObject = AutoMapper.Mapper.DynamicMap<IDataReader, List>( dt.CreateDataReader()); return apiObject; public class dtoAPISimpleInvestor { public int FirmID { get; set; } public string FirmName { get; set; } public string Type { get; set; } public string Location { get; set; } } […]

OpenCV从字节数组创建Mat

在我的C ++ DLL中,我从字节数组创建Mat: BYTE * ptrImageData; //Image data is in this array passed to this function Mat newImg = Mat(nImageHeight, nImageWidth, CV_8UC3, ptrImageData); 使用一些灰色阴影而不是原始阴影创建图像。 这是从字节数组创建Mat的正确方法吗? 请参阅代码 ptrImageData从C#代码传递给C ++ DLL。 C#代码传递图像数据 System.Drawing.Image srcImage //Has the image MemoryStream ms = new MemoryStream(); Marshal.FreeHGlobal(ptrImageData); srcImage.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg); byte[] imgArray = ms.ToArray(); ms.Dispose(); int size1 = Marshal.SizeOf(imgArray[0]) * imgArray.Length; IntPtr […]

获取代理对象的基础类型

我正在使用Castle DynamicProxy,我的ViewModel是一个代理,如下所示: 命名空间MyApplication.ViewModels { 公共类MyViewModel:BaseViewModel,IMyViewModel { } } 我的viewmodel的代理看起来像这样: {Name =“IRootViewModelProxyffecb133f590422098ca7c0ac13b8f98”FullName =“IRootViewModelProxyffecb133f590422098ca7c0ac13b8f98”} 我想获得被代理的实际类型的实际类型或命名空间。 有没有办法做到这一点? 我想要一些返回MyApplication.ViewModels.MyViewModel类型的东西。 如果我使用concreate类作为代理,BaseType将返回正在代理的实际类,但在使用该接口时,BaseType将返回System.Object。

如何在WebBrowser实例中的WPF和JavaScript之间进行通信?

我有一个带有嵌入式浏览器(WebBrowser)和一些JavaScript的C#/ WPF应用程序。 他们如何在两个方向上相互沟通? 使用URL是否切实可行? JS-> WPF:倾听变化。 WPF-> JS:将URL更改为javascript:alert(‘hello’); 有没有更好的办法?

WCF:EncryptedKey子句未包含所需的加密令牌’System.IdentityModel.Tokens.X509SecurityToken’

我正在尝试使用WCF客户端连接到基于Java的Web服务 证书我已经提供(自签名)在SOAPUI中完美地工作。 这是我的设置: 但是,我在使用WCF客户端时遇到问题。 我的app.config 使用Keystore Explorer我从JKS导出两个证书: public_test_hci_cert.cer test_soap_ui.p12 网络服务电话: var client = new Example_TestClient(); client.ClientCredentials.UserName.UserName = “user”; client.ClientCredentials.UserName.Password = “pass”; X509Certificate2 certClient = new X509Certificate2(certClientPath, certClientPassword); client.ClientCredentials.ClientCertificate.Certificate = certClient; X509Certificate2 certService= new X509Certificate2(certServicePath); client.ClientCredentials.ServiceCertificate.DefaultCertificate = certService; var response = client.Example_Test(requestObj); 请求完全到达服务器,但似乎WCF不理解响应,因为我得到此exception: “The EncryptedKey clause was not wrapped with the required encryption token ‘System.IdentityModel.Tokens.X509SecurityToken’.” at […]

从BS#传递BSTR到COM函数的惯例(COM互操作)

我正在编写一个用C ++编写COM的API,还编写一个在C#中使用这个API的程序。 我的问题是关于将BSTR传递给COM函数时的BSTR内存管理语义。 说我的IDL看起来像: HRESULT SomeFunction([in] BSTR input); 目前这个function实现如下: HRESULT SomeFunction(BSTR input) { // Do stuff …, then: SysFreeString(input); } 当我用类似SomeFunction(myString)类的东西从C#调用它时,C#会生成这样的东西(伪代码): myString = SysAllocString(“string”); SomeFunction(myString); 或者更喜欢这样: myString = SysAllocString(“string”); SomeFunction(myString); SysFreeString(myString); 也就是说,C#是否释放了它生成的BSTR来编组COM接口,还是应该在我的函数中释放它? 谢谢!

.net windows服务本地应用程序数据与普通应用程序不同

在普通的控制台应用程序我有这个 Environment.SpecialFolder.LocalApplicationData是C:\Users\Simon\AppData\Local\ 在Windows服务中 Environment.SpecialFolder.LocalApplicationData是C:\Windows\system32\config\systemprofile\AppData\Local\ 如何在两种类型的应用程序中指定相同的路径?