Tag: .net 2.0

在没有Excel和OLEDB的情况下读取.xlsx

有没有机会在C#中读取.xlsx文件而不在客户端上安装Excel,并且没有OLEDB连接可用? 该应用程序是一个用VS2005 C#.NET Framework 2.0编写的Winforms项目。

更新exe资源部分中的图像(在c#/ C中)

我在资源部分的可执行文件中嵌入了很少的图像。 我按照以下步骤创建了我的可执行文件: 使用某个实用程序为目录中的所有图像(.jpg)生成.resx文件。 图像命名为image1.jpg,image2.jpg等。 使用: resgen myResource.resx从.resx文件创建.resources文件 使用/ res标志嵌入生成的.resource文件: csc file.cs /res:myResource.resources 4我正在访问这些图像: ResourceManager resources = new ResourceManager(“myResource”, Assembly.GetExecutingAssembly()); Image foo = (System.Drawing.Image)(resources.GetObject(“image1”)); 这一切都按预期正常工作。 现在我想将嵌入的图像更改为一些新图像。 这就是我目前正在做的事情: class foo { [DllImport(“kernel32.dll”, SetLastError = true)] static extern IntPtr BeginUpdateResource(string pFileName, bool bDeleteExistingResources); [DllImport(“kernel32.dll”, SetLastError = true)] static extern bool UpdateResource(IntPtr hUpdate, string lpType, string lpName, string wLanguage, […]

Invoke()正在阻塞

我的应用程序GUI有时会停止重绘。 有许multithreading正在触发各种事件(如计时器或网络数据准备等)。 还有很多控件正在订阅这些事件。 因此,所有事件处理程序都会播放InvokeRequired / Invoke游戏。 现在我发现当GUI冻结时,很multithreading都在等待Invoke()返回。 看起来消息泵停止了泵送。 处理程序看起来像这样: private void MyEventHandler( object sender, EventArgs e ) { if ( InvokeRequired ) { Invoke( new EventHandler( MyEventHandler ), sender, e ); return; } SetSomeStateVariable(); Invalidate(); } 有任何想法吗? 解决方案:BeginInvoke()。 看起来如果你有很多CrossThread-Events,你应该总是使用BeginInvoke()…… 谢谢。 谢谢大家。 编辑:看起来像BeginInvoke()真的解决了它。 直到现在都没有冻结。

C#对接控制库

我正在寻找一个适用于.NET 2.0的C#WinForms的对接控制库,它是免费软件,不使用任何P / Invokes(因此它与Mono兼容)并且没有错误。 WeifenLuo本来是最好的选择,但因为它使用了大量的P / Invokes,我将无法让我的软件成为跨平台的。 那么有什么好建议吗?

允许唤醒定时器Windows 7 / Vista

我需要允许WakeTimers(计算机从睡眠/hibernate状态唤醒)为插入的所有电源计划设置为Enabled。 电源选项”> 我尝试过Win32_PowerSetting但它只适用于英文版的Windows。 我需要使用.NET 2.0 谢谢你的回复!

默认/相对路径解析如何在.NET中工作?

所以…我曾经认为,当你访问一个文件但指定了没有路径的名称(在我的情况下是CAISLog.csv)时,.NET会希望文件驻留在与正在运行的.exe相同的路径上。 当我逐步完成解决方案(C#.NET2。* VS2K5)但我在正常模式下运行应用程序(由Websphere MQ触发器监视器启动并在后台作为网络服务运行)而不是访问文件时在.exe是在C:\ WINDOWS \ system32中查找的路径。 如果它重要父任务的.exe与我的应用程序几乎在同一文件夹结构/路径中 我收到一个匹配的错误:“ System.UnauthorizedAccessException:拒绝访问路径’C:\ WINDOWS \ system32 \ CAISLog.csv’。 ” 我的解决方法是完全限定我的文件的位置。 然而,我想要理解的是“在IO期间仅指定文件名时,管理路径如何解析的.NET规则是什么?” 我觉得我错过了一些基本的概念,这让我很烦。 编辑 – 我不确定它本身是一个.NET规则,但Schmuli似乎更清楚地解释了这个概念。 我一定会在将来尝试Rob Prouse的建议,所以+1也是如此。 如果有人有一些重写措辞的建议,强调我并不真正关心找到我的.exe的路径 – 而只是不明白相关路径解决方案发生了什么(我可能仍然把我的终端文件搞砸了) …

SerialPort.GetPortNames()返回错误的端口名称

虽然c#不是我的主要编程语言,但我现在正在维护这样一个程序几年。 此程序连接到串行端口上的设备,从Windows XP到8.1。 一个特定的“function”是它使用.NET Framework 2.0。 有些用户升级到Windows 10,我们抱怨程序无法检测/打开设备的COM端口。 我们已经在我们自己的测试系统上使用干净的Win10安装确认了这一点 事实certificate,函数SerialPort.GetPortNames()返回错误的端口名称,并在端口名称后添加“奇怪”字符。 例如: COM3吀 COM3䡢 COM3゠ 等等。当我刷新列表时,每次在数字后面显示另一个字符(或两个)。 测试代码非常简单: string[] portNames = System.IO.Ports.SerialPort.GetPortNames(); log(“Available ports:”); foreach (string PortAvailable in portNames) { log(PortAvailable); } 日志函数会在表单上的标准TextBox中添加一行: txtLog.Text += Msg + Environment.NewLine; 这适用于所有其他Windows版本。 我已经检查了注册表,所有看起来都很好。 有人对此有所了解吗? 我怀疑.NET Framework 2.0不再是100%兼容的,虽然你可以在Windowsfunction中启用它,但似乎程序本身运行正常(除了我的串口问题)。 我有点害怕升级到更新的.NET,更不用说我们使用VisualStudio 2008 for c#(max = .NET 3.5)。 请注意,程序仍然需要在Windows XP上运行(POS版本仍由Microsoft维护)。 补充:我已经将测试程序“升级”为.NET 3.5,并且仍然存在完全相同的问题。 下一步是安装一个新的VisualStudio(它现在似乎是免费的?我应该检查Studio中的隐私设置吗?;-)。 增加2:安装了VisualStudio […]

从一个流复制到另一个流?

对于工作,我的项目规范是使用.Net 2.0,所以我没有得到稍后带来的方便的CopyTofunction。 我需要将响应流从HttpWebResponse复制到另一个流(很可能是一个MemoryStream ,但它可能是Stream任何子类)。 我的正常策略有以下几点: BufferedStream bufferedresponse = new BufferedStream(HttpResponse.GetResponseStream()); int count = 0; byte[] buffer = new byte[1024]; do { count = bufferedresponse.Read(buffer, 0, buffer.Length); target.Write(buffer, 0, count); } while (count > 0); bufferedresponse.Close(); 有更有效的方法吗? 缓冲区的大小真的重要吗? 在.Net 2.0中从一个流复制到另一个流的最佳方法是什么? PS这是用于下载200 + MB以上的大型GIS图像。 当然,可靠性至关重要。

migratordotnet – 从应用程序内部运行迁移(无需或构建)

有没有办法从应用程序本身运行迁移? 谢谢!

电话号码规范化:任何预先存在的图书馆?

我有一个使用电话号码作为唯一标识符的系统。 出于这个原因,我想使用标准化格式格式化所有电话号码。 因为我无法控制我的源数据,所以我需要自己解析这些数字并将它们格式化,然后再将它们添加到我的数据库中。 我即将编写一个可以读取电话号码并输出标准化电话格式的解析器,但在此之前,我想知道是否有人知道我可以用来格式化电话号码的任何预先存在的库。 如果没有预先存在的库,在创建可能不明显的此function时,我应该记住哪些事项? 虽然我的系统目前仅处理美国号码,但我打算尝试包括对国际号码的支持,以防万一有可能需要它。 编辑我忘了提到我正在使用C#.NET 2.0。