如何确定是否因共享冲突而抛出IOException?

我有一个C#应用程序,我想将文件复制到一个新位置。 有时我需要覆盖现有文件。 当发生这种情况时,我收到一个System.IO.IOException。 我想从共享冲突中恢复但是如何确定是否返回了IOException,因为目标文件正在使用而不是其他原因? 我可以查找“进程无法访问该文件,因为它正被另一个进程使用”。 消息……但我不喜欢这个主意。

从Web登录C#下载文件

我已经可以使用此代码登录到具有重定向(我正在保存cookie)的网页 CookieCollection cookies = new CookieCollection(); HttpWebRequest cookieRequest = (HttpWebRequest)WebRequest.Create(“https://www.loginpage.com/”); cookieRequest.CookieContainer = new CookieContainer(); cookieRequest.CookieContainer.Add(cookies); HttpWebResponse cookieResponse = (HttpWebResponse)cookieRequest.GetResponse(); cookies = cookieResponse.Cookies; string postData = “name=********&password=*********&submit=submit”; HttpWebRequest loginRequest = (HttpWebRequest)WebRequest.Create(“https://www.loginpage.com/”); loginRequest.CookieContainer = new CookieContainer(); loginRequest.CookieContainer.Add(cookies); loginRequest.Method = WebRequestMethods.Http.Post; loginRequest.UserAgent = “Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.121 Safari/535.2”; loginRequest.AllowWriteStreamBuffering = true; loginRequest.ProtocolVersion = […]

通过HtmlAgilityPack获取属性的值

我想通过HtmlAgilityPack获取属性的值。 Html代码: 我想获得最后一个href属性。 我的c#代码: HtmlWeb web = new HtmlWeb(); HtmlAgilityPack.HtmlDocument htmldoc = web.Load(Url); htmldoc.OptionFixNestedTags = true; var navigator = (HtmlNodeNavigator)htmldoc.CreateNavigator(); string xpath = “//link/@href”; string val = navigator.SelectSingleNode(xpath).Value; 但该代码返回第一个href值。

处理自动缩放的正确方法

我正在与WinForms应用程序上的另一个开发人员合作,我们在与自动缩放相关的外观方面遇到了很大问题。 我的系统(索尼VAIO)在此菜单上默认为125%: 据我所知,125%将DPI设置为120,默认字体大小(菜单等)设置为11pt。 在另一个开发人员的系统上,他的默认值为100%,即96 dpi和9pt字体。 我不确定,但我认为只有DPI才是让我们感到悲痛的原因。 问题表现在文本大小错误,要么掩盖其他控件,要么过于分散(取决于最后在设计师中打开的人)。 据我所知,所有ContainerControl都设置为AutoScaleMode.Inherit ,顶级窗体是AutoScaleMode.Dpi 。 这是大多数人使用的吗?

在基类的构造函数之前调用派生类的构造函数

好吧,最初我有几个常量(比如MAX_SPEED)在每个派生类中都有不同的值。 我们的想法是在基类的某些方法中使用这些值。 那时我才意识到我不能用常量做到这一点,所以我创建了只读属性。 我需要一个方法在实例化时将这些值分配给私有字段,最好是在基类中 。 但首先我必须在派生类中确定原始值。 由于这些是属性,我在定义时找不到初始化它们的方法,因此唯一的方法是在派生构造函数中。 这就是问题出现的地方:在分配给基类中的私有字段之后,值被初始化。 我逃避的解决方案是创建一个虚拟方法并在那里进行分配。 有没有办法从派生类调用基础构造函数,以便首先调用派生构造函数的代码? class BaseClass { public BaseClass() { System.Console.WriteLine(“This should be shown after”); } } class DerivedClass : BaseClass { public DerivedClass() : base() { System.Console.WriteLine(“This should be shown first”); } } 当然,在这个例子中,它可以反过来工作。 有解决方案吗?

LINQ在Select中选择

我试图查询包含员工信息的集合。 当我查询该集合时,我想返回一个对象的枚举,其中每个对象有两个字段: 名称 ManagerName (请注意,每个经理都是员工!) 现在,这是我遇到的问题。 当我在select中执行select ,每个对象上返回的ManagerName字段的值为: System.Data.Common.Internal.Materialization.CompensatingCollection 这是查询: var query = from e in db.Employees select new { Name = e.Name, ManagerName = from em2 in db.Employees where (em2.EmployeeID == e.ManagerID) select em2.Name }; 具体来说,当我查看ManagerName的值时,我发现它是一个产生单个项目的枚举。 并且单项是包含Manager名称的字符串。 所以,我认为我很接近。 问题:如何更改我的查询,以便它返回一个对象的枚举,其中每个对象只有两个字符串字段Name和ManagerName ?

允许红外设备发送信号以控制PC的监视器

我有一个可以用作电视的显示器(它有一个DVI-D连接器和一个电缆连接器。)有一段时间我的电脑上有一个红外设备,用于同步我的PDA和手机。 我希望我的电脑的红外/ irDA设备向我的显示器发送信号,以便在电视和电脑模式之间切换。 (或者以其他方式控制显示器,例如在登录/注销期间打开和关闭显示器。)为此,我需要: 使用PC设备记录监视器遥控器上的命令。 从我的电脑向我的显示器重复该信号以发送命令。 拥有近30年的编程经验,代码没有问题。 但由于我对红外设备的唯一了解非常有限,我需要一些有用的提示和技巧。 Google搜索会提供大量有用的链接。 但我可以使用帮助找到最有用的。

在.NET中使用Blowfish加密

我正在开展一个项目,我需要进行Blowfish加密和解密。 有没有其他人用它来做这个但却无法在.NET C#环境中找到任何东西? 理想情况下,我会喜欢不依赖于运行exe的东西,因为这最终将存在于exe服务器的实时服务器上! 我已经在SO上阅读了一些较旧的post,但没有什么合适的。 有任何想法吗? 谢谢

如何加载内联DTD以用于XDocument?

我有一个问题,关于如何将文档类型定义包含到XML文件中,或者从WP7中加载到XDocument中的XML文件中。 我有与此类似的DTD文件: <!DOCTYPE root [ ]> 我需要将这个DTD添加到XML中,以便捕获特殊字符,例如é 。 我使用以下方法从Web获取XML以在Linq中使用: private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e) { string documentUrl = “http://www.example.com”; WebClient client = new WebClient(); client.OpenReadCompleted += new OpenReadCompletedEventHandler(client_OpenReadCompleted); client.OpenReadAsync(new Uri(documentUrl, UriKind.Absolute)); } void client_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e) { Stream str = e.Result; XDocument data = XDocument.Load(str); // Saving the XML to the file system […]

如何在WPF中使DispatcherTimer事件更顺畅?

在我的WPF应用程序中,用户按下按钮以启动平滑旋转的3D模型,并按下按钮以停止旋转。 为此,我创建了一个DispatcherTimer: DispatcherTimer timer = new DispatcherTimer(); timer.Tick += new EventHandler( timer_Tick ); timer.Interval = new TimeSpan( 0, 0, 0, 0, 30 ); 当按下按钮时,我调用timer.Start() ,当按钮松开时,我调用timer.Stop() 。 timer_Tick函数改变模型的旋转: void timer_Tick( object sender, EventArgs e ) { spin = ( spin + 2 ) % 360; AxisAngleRotation3D rotation = new AxisAngleRotation3D( new Vector3D( 0, 1, 0 ), […]