Tag: .net 4.0

使用odp.net连接到Oracle,使用C#连接OCI

我一直在阅读如何从我的C#win应用程序连接到我的oracle数据库,但我一直在“撞墙”。 我决定使用odp.net和OCI,这样客户端计算机不需要安装客户端,但我无法让它工作。 我有一个小的测试应用程序,我在下面显示的代码,在我的解决方案中,我从oracle OCI添加了以下dll:oci.dll,orannzsbb11.dll和oraociicus11.dll。 它们都与最终的.exe文件放在一起。 测试代码: private static string CONNECTION_STRING = “User Id=hr;Password=hr;Data Source=(DESCRIPTION=” + “(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521))” + “(CONNECT_DATA=(SID=XE)));Connect Timeout=15;”; static void Main(string[] args) { try { using (var conn = new OracleConnection(CONNECTION_STRING)) { conn.Open(); Console.WriteLine(“Connection is: {0}”, conn.State.ToString()); } } catch (Exception ex) { Console.WriteLine(ex.Message); } } 问题发生在using(…)语句中,程序停止工作,我没有得到任何响应。 为了让OCI工作,我需要做些什么?

Visual Studio 2010不断更改我的winforms控件

我在VS 2010中有一个奇怪的用户控件情况。表单设计师不断更改我的条目,然后告诉我它不存在! 它第一次编译并运行,然后如果我更改了一些不相关的东西,它会在designer.cs文件中给出一个错误( 无法解析符号SomeEntry )。 private SomeEntry someEntry; // … this.someEntry = new **MyNameSpace**.SomeEntry(); 如果我删除MyNameSpace。 this.someEntry = new SomeEntry(); 它有效,直到我再次做出改变。 如果我在鼠标位于更改的设计器文件上时查看该类,SomeEntry将显示SomeEntry.SomeEntry()而不是MyNameSpace.SomeEntry() 基本上,定义是这样的: namespace MyNameSpace { public partial class SomeEntry : FormValidatingUserControl { public SomeEntry() { InitializeComponent(); } } } 那么,我该怎么办?

使用Rx确定鼠标拖动结束的正确方法是什么?

我正在慢慢学习如何使用WPF的.NET Reactive Extensions 。 有一些初学者的例子说明编写拖放或绘图例程是多么简单,但它们都非常简单。 我试图更进一步,对我来说,“正确”的方式是什么并不明显。 这些示例都展示了如何从MouseDown , MouseMove和MouseUp定义事件流 var mouseDown = from evt in Observable.FromEvent(…, “MouseDown”) select evt.EventArgs.GetPosition(…); var mouseMoves = from evt in Observable.FromEvent(…, “MouseMove”) select evt.EventArgs.GetPosition(…); var mouseUp = Observable.FromEvent(…, “MouseUp”); 然后如何在MouseDrag轻松完成任务(这会显示从起始拖动点到当前鼠标位置创建的矩形的坐标) var mouseDrag = from start in mouseDown from currentPosition in mouseMoves.TakeUntil(mouseUp) select new Rect(Math.Min(start.X, currentPosition.X), Math.Min(start.Y, currentPosition.Y), Math.Abs(start.X – currentPosition.X), […]

获得领先的空白

我刚刚编写了这个方法,我想知道框架中是否存在类似的东西? 它看起来就像是其中一种方法…… 如果没有,有没有更好的方法呢? /// /// Return the whitespace at the start of a line. /// /// Round the number of spaces down to the nearest multiple of 4. public string GetLeadingWhitespace(string line, bool trimToLowerTab = true) { int whitespace = 0; foreach (char ch in line) { if (ch != ‘ ‘) break; ++whitespace; } […]

OpenXML在写元素时挂起

我有一个程序,它基本上从数据库中提取数据,将其缓存到一个文件,然后将该数据导出为多种格式(Excel,Excel 2003,CSV)。 我正在使用OpenXML SDK 2.0来完成Excel工作。 这些导出过程并行运行(使用Parallel.ForEach ),数据量可能非常大 – 例如,某些CSV为800MB。 在这些较大的导出期间,我注意到XML文档的编写将会挂起。 例如,如果我有8个并行导出,那么在某些时候它们都会“暂停”。 它们都围绕着同一点: //this.Writer is an OpenXmlWriter which was created from a WorksheetPart. this.Writer.WriteElement(new Cell() { CellValue = new CellValue(value), DataType = CellValues.String }); 当发生这种情况时,我暂停调试器(在这种情况下是VS2013)并注意到所有线程都在代码的相同部分阻塞 – 有些在OpenXML SDK中更深一些 – 但它们都源于对OpenXmlWriter.WriteElement的调用。 我使用JustDecompile挖掘了源代码,但没有找到任何答案。 似乎正在使用中间流写入隔离存储,这由于某种原因阻塞。 每个基础流都是FileStream 。 这是一个屏幕截图,显示在OpenXmlWriter.WriteElement方法中或内部阻止的所有(在本例中为8个)并行任务: 其中一个挂起线程的完整堆栈 – 带注释。 WindowsBase.dll!MS.Internal.IO.Packaging.PackagingUtilities.CreateUserScopedIsolatedStorageFileStreamWithRandomName Normal WindowsBase.dll!MS.Internal.IO.Packaging.PackagingUtilities.CreateUserScopedIsolatedStorageFileStreamWithRandomName(int retryCount, out string fileName) WindowsBase.dll!MS.Internal.IO.Packaging.SparseMemoryStream.EnsureIsolatedStoreStream() […]

MemoryMappedFile.CreateFromFile始终抛出UnauthorizedAccessException

我意识到.NET 4.0处于测试阶段,但我希望有人能够解决这个问题。 我正在尝试从DLL创建一个内存映射文件: FileStream file = File.OpenRead(“C:\mydll.dll”); using (MemoryMappedFile mappedFile = MemoryMappedFile.CreateFromFile(file, “PEIMAGE”, 1024 * 1024, MemoryMappedFileAccess.ReadExecute)) { using (MemoryMappedViewStream viewStream = mappedFile.CreateViewStream()) { // read from the view stream } } 不幸的是,无论我做什么,我总是得到一个UnauthorizedAccessException , MSDN文档说明了这一点: 操作系统拒绝指定的文件访问权限; 例如,access设置为Write或ReadWrite,但文件或目录是只读的。 我用Sysinternals Process Monitor监视我的应用程序,它显示该文件确实正在成功打开。 我也尝试了内存映射其他非DLL文件,但结果相同。

parellellizing异步调用时如何获得最大出站请求?

通过Fiddler分析下面的代码,我意识到使用Parallel Extensions我可以获得最多2个出站请求: new string[] { “http://stackoverflow.com”, “http://superuser.com”, “http://serverfault.com”, “http://stackexchange.com” } .AsParallel() .Select(a => HttpWebRequest.Create(a).GetResponse()) .ToArray() ; 我应该使用什么方法来最大化出站请求的数量?

HttpContext在global.asax.cs中不起作用

我在global.asax.cs中有这个代码 protected void Application_Start(object sender, EventArgs e) { string logFile = HttpContext.Current.Request.PhysicalApplicationPath + “log4net.config”; } 它在.NET 4.0中运行良好,但在.NET 4.5中使用时会引发以下exception。 在此上下文中不提供请求

如何在不锁定的情况下读取此实例原始线程安全?

下面的类的问题是当读取myThreadSafe.Value它可能不会返回最新的值。 public class ThreadSafe { private int value; public int Value { get { return value; } } public void Update() { Interlocked.Add(ref value, 47); // UPDATE: use interlocked to not distract from the question being asked. } } 我知道在阅读和写作时我可以锁定: public int Value { get { lock(locker) return value; } } public void Update() { […]

Application.GetContentStream为内容Uri返回null

我在项目集中将“sample.xml”文件作为内容。 我正在运行此代码: Uri uri = new Uri(“/sample.xml”, UriKind.Relative); StreamResourceInfo contentStream = Application.GetContentStream(uri); 为什么它返回null contentStream?