Tag: interop

从.NET设置系统时区

有没有人有一些代码,将采取从.NET的TimeZoneInfo字段,并通过SetTimeZoneInformation执行interop代码设置系统时区? 我意识到它基本上是将TimeZoneInfo成员映射到结构成员,但是对于我而言,这些字段如何精确地映射或者我应该关心什么以外的偏见并不明显。

将C ++结构数组编译为C#

我在C ++中有以下结构: #define MAXCHARS 15 typedef struct { char data[MAXCHARS]; int prob[MAXCHARS]; } LPRData; 还有一个我正在调用的函数来获得这些结构中的3个数组: void GetData(LPRData *data); 在C ++中,我只是做这样的事情: LPRData *Results; Results = (LPRData *)malloc(MAXRESULTS*sizeof(LPRData)); GetData( Results ); 它会工作得很好,但在C#我似乎无法得到它的工作。 我已经创build了一个C#结构像这样: public struct LPRData { /// char[15] [MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 15)] public string data; /// int[15] [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 15)] public int[] prob; } 如果我初始化这些(及其所有子数组)的数组,并将其传递给它: […]

Excel Interop – 效率和性能

我想知道我能做些什么来提高Excel自动化的性能,因为如果你在工作表中有很多事情可能会很慢。 这里有一些我发现自己: ExcelApp.ScreenUpdating = false – closures重ExcelApp.ScreenUpdating = false的屏幕 ExcelApp.Calculation = Excel.XlCalculation.xlCalculationManual – closures计算引擎,以便Excel在单元格值更改时不会自动重新计算(完成后将其重新打开) 减less对Worksheet.Cells.Item(row, col)和Worksheet.Range调用 – 我必须轮询数百个单元格才能find我需要的单元格。 实现一些细胞位置的caching,将执行时间从约40秒减less到约5秒。 什么样的interop调用会对性能产生重大影响,应该避免? 你还能做什么来避免不必要的处理?

用IDisposable清理Excel互操作对象

在我的公司中,发布Excel Interop对象的常用方法是使用IDisposable以下方式: Public Sub Dispose() Implements IDisposable.Dispose If Not bolDisposed Then Finalize() System.GC.SuppressFinalize(Me) End If End Sub Protected Overrides Sub Finalize() _xlApp = Nothing bolDisposed = True MyBase.Finalize() End Sub 其中_xlApp是通过以下方式在构造函数中创build的: Try _xlApp = CType(GetObject(, "Excel.Application"), Excel.Application) Catch e As Exception _xlApp = CType(CreateObject("Excel.Application"), Excel.Application) End Try 客户端使用using-statement来执行有关excel互操作对象的代码。 我们完全避免使用两点规则 。 现在我开始研究如何释放(Excel)互操作对象以及我发现的几乎所有讨论,比如如何正确清理Excel互操作对象或释放Excel对象 ,大多使用Marshal.ReleaseComObject(),但都不使用IDisposable接口。 我的问题是:使用IDisposable Interace发布excel互操作对象有什么缺点吗? 如果是这样,这些缺点是什么。

如何正确清理Excel互操作对象?

我在C#中使用Excel互操作( ApplicationClass ),并在我的finally子句中放置了下面的代码: while (System.Runtime.InteropServices.Marshal.ReleaseComObject(excelSheet) != 0) { } excelSheet = null; GC.Collect(); GC.WaitForPendingFinalizers(); 虽然这样的作品, Excel.exe进程仍然在后台,即使我closuresExcel。 只有在我的应用程序被手动closures时才会被释放。 我做错了什么,或者有没有其他办法来确保互操作对象被妥善处置?

我怎样才能使MySQL的大小写敏感字符串比较MySQL?

我有一个返回五个字符混合大小写的函数。 如果我对这个字符串进行查询,它会返回值而不管大小写。 我如何使MySQL字符串查询区分大小写?