Tag: .net

重用文件流

在过去,我总是使用FileStream对象来写或重写整个文件,之后我会立即关闭流。 但是,现在我正在开发一个程序,我想在其中保持FileStream打开,以便允许用户在两​​次保存期间保持对文件的访问。 (见我之前的问题 )。 我正在使用XmlSerializer将我的类序列化为from和XML文件。 但是现在我保持FileStream打开以便稍后用于保存(重新序列化)我的类实例。 如果我重复使用相同的文件流而不是使用新的文件流,是否需要进行任何特殊考虑? 我是否需要在保存之间将流重置为开头? 如果稍后保存的大小小于先前的保存,则FileStream将保留旧文件中的剩余字节,从而创建损坏的文件? 我是否需要做一些事情来清除文件,以便它表现得好像我每次都在写一个全新的文件?

WCF暂停通话

我有一个实现长轮询的WCF服务。 但是,我认为没有办法让每个服务调用在被调用时产生一个新线程。 目前,长期合约的合约正在等待事件发生,并阻止任何其他合同被调用。 从WCF中的另一个合同异步运行一个合同的建议方法是什么? 我想保留一个静态线程池,但我不太确定该解决方案是否可扩展。 谢谢!

如何将自定义Windows窗体控件添加到Visual Studio工具箱中

我想将自定义控件添加到VS工具箱中。 但是,当新项目打开时,我总是需要它出现在工具箱中。 我怎样才能做到这一点?

使用Rx和SelectMany限制并发请求

我有一个我想要使用HttpClient同时下载的页面的URL列表。 URL列表可能很大(100或更多!) 我目前有这个代码: var urls = new List { @”http:\\www.amazon.com”, @”http:\\www.bing.com”, @”http:\\www.facebook.com”, @”http:\\www.twitter.com”, @”http:\\www.google.com” }; var client = new HttpClient(); var contents = urls .ToObservable() .SelectMany(uri => client.GetStringAsync(new Uri(uri, UriKind.Absolute))); contents.Subscribe(Console.WriteLine); 问题是:由于SelectMany的使用,几乎同时创建了大量的任务。 似乎如果URL列表足够大,很多任务会给出超时(我得到“任务被取消”例外)。 因此,我认为应该有一种方法,可能使用某种调度程序,来限制并发任务的数量,在给定时间不允许超过5或6。 通过这种方式,我可以获得并发下载而无需启动太多可能会失速的任务,就像他们现在所做的那样。 如何做到这一点,我不会饱和大量的超时任务? 十分感谢。

您如何使用出生日期计算C#的年龄(考虑闰年)

这是一个问题。 我见过很多解决方案,但似乎没有人能达到我想要的标准…… 我想以这种格式显示年龄 20 y(s) 2 m(s) 20 d(s) 20 y(s) 2 m(s) 2 m(s) 20 d(s) 20 d(s) 等等… 我已经尝试了几种解决方案,但闰年对我造成了问题。 由于闰年,我的unit testing总是失败,无论中间有多少天,飞跃都会计入额外的天数。 这是我的代码…. public static string AgeDiscription(DateTime dateOfBirth) { var today = DateTime.Now; var days = GetNumberofDaysUptoNow(dateOfBirth); var months = 0; var years = 0; if (days > 365) { years = today.Year – […]

如何通过XAML为Enum类型的子元素设置MenuItem的IsChecked属性?

我已使用此解决方案将MenuItem绑定到Enum。 枚举值显示正确,但我似乎无法为MenuItem的子项设置默认选中的值。 换句话说,我希望MenuItem默认选中其中一个子项(我正在使用的枚举值)。 我尝试了以下代码,使用了Style和触发的Setter: 枚举包含诸如ItemA之类的值,我还在Trigger Value属性中尝试了AnEnum.First或0 (如此AnEnum.First 回答的 ),但无济于事。 DataTrigger是否可取? 如果是这样,我怎么能在XAML中写出来? 或者我应该在ItemTemplate为MenuItem使用DataTemplate吗? 我也尝试使用SomeSetting.Items相关的方法摆弄代码隐藏,但大多数属性(如Current)都是只读的。 我知道你可以在代码隐藏中编写SomeSettingMenu.ItemsSource = Enum.GetValues(typeof(….)) ,但我又不知道如何以编程方式在MenuItem中选择一个Item。 我也试过这段代码,也不行: enums是我正在使用的不同程序集的命名空间。 任何想法将不胜感激,谢谢你提前!

检查文件夹是否在C#中使用

考虑一个网络文件夹: \\desiis\c$\Company\B2b\Monitor 在该计算机上,任何尝试删除目录Monitor进程都会收到错误,因为LAN上的用户打开了该目录(可能是Windows资源管理器)。 我是否可以通过C#和.NET框架检测是否有任何用户(以及哪个用户)打开/正在使用某个特定目录?

DirectoryInfo.Delete与Directory.Delete

我想删除一些临时文件的内容,所以我正在处理为我删除它们的小程序。 我有这两个代码示例,但我很困惑: 哪个代码示例更好? 第一个示例code1删除文件1和2,但第二个示例,code2将删除文件夹1和2的包含? 代码1 public void DeleteContains(string Pathz) { List FolderToClear = new List(); FolderToClear.Add(new DirectoryInfo(@”C:\Users\user\Desktop\1″)); FolderToClear.Add(new DirectoryInfo(@”C:\Users\user\Desktop\2″)); foreach (DirectoryInfo x in FolderToClear) { x.Delete(true); } } 代码2 private void DeleteContents(string Path) { string[] DirectoryList = Directory.GetDirectories(Path); string[] FileList = Directory.GetFiles(Path); foreach (string file in FileList) { File.Delete(file); } foreach ( string directoryin DirectoryList) […]

如何从字符串中设置整数Hex Literal,

我试图从xml设置文件加载一个hex文字,我可以很好地解析xml并从文件中获取所需的字符串, 但我似乎无法设置一个int变量值:/ 码: int PlayerBaseAddress = System.Convert.ToInt32(ConfigLoader.GetSetting(“PlayerBaseAddress”)); // Input string was not in a correct format. public static string GetSetting(string Val) { // This loads from the xml file, Pretend its hardcoded to return a string of 0x17EAAF00 } int PlayerBaseAddress = 0x17EAAF00; // This works.

使用PowerShell调用Visual Studio方法

我正在尝试编写一个powershell脚本来调用位于我的Visual Studio(2010)解决方案中的方法。 调用的语法是什么,例如,类似的方法 public void CreateData(string s, int i) ?