Tag: .net 4.0

如何使用.NET 4.0读取.RTF文件

我见过使用Word 9.0对象库的示例。 但我在VS2010中安装了Office 2010 Beta和.NET 4.0。 有关如何使用新Word Dlls的任何提示? 所以我只是想用.NET3.5或更高版本获得RTF到TEXT的function。

如何在.NET 4中使用Console.CancelKeyPress? (在.NET 3.5及更低版本中正常工作)

我正在C#4中编写一个控制台应用程序,并希望优雅地取消我的程序并按下Ctrl + C. 我之前使用过很多次代码,但现在尝试在.NET 4中使用它时,似乎发生了一个奇怪的未处理exception。 namespace ConsoleTest { class Program { private static bool stop = false; static void Main(string[] args) { System.Console.TreatControlCAsInput = false; System.Console.CancelKeyPress += new ConsoleCancelEventHandler(Console_CancelKeyPress); while (!stop) { System.Console.WriteLine(“waiting…”); System.Threading.Thread.Sleep(1000); } System.Console.WriteLine(“Press any key to exit…”); System.Console.ReadKey(true); } static void Console_CancelKeyPress(object sender, ConsoleCancelEventArgs e) { stop = true; e.Cancel = true; […]

简单的Linq表达式将无法编译

有这些基本定义 bool MyFunc(string input) { return false; } var strings = new[] {“aaa”, “123”}; 我想知道为什么这不会编译: var b = strings.Select(MyFunc); 但这会: var c = strings.Select(elem => MyFunc(elem)); 错误消息是“方法的类型参数’System.Linq.Enumerable.Select(System.Collections.Generic.IEnumerable,System.Func)’无法从用法中推断出来。” Resharper错误提示说它之间很困惑 Select(this IEnumerable, Func) 和 Select(this IEnumerable, Func) …但MyFunc的签名是明确的 – 它只需要一个(字符串)参数。 谁能在这里解决一些问题?

Thread.sleep vs Monitor.Wait vs RegisteredWaitHandle?

(以下项目有不同的目标,但我很有趣,知道他们如何“PAUSEd”) 问题 Thread.sleep – 它是否会影响系统的性能?是否会将线程与其等待捆绑在一起? 那么Monitor.Wait呢? 他们“等待”的方式有什么不同? 他们在等待时会占用一个线程吗? 那么RegisteredWaitHandle呢? 此方法接受在发出等待句柄信号时执行的委托。 虽然它在等待, 但它并没有占用一个线程。 所以一些线程被暂停并且可以被代表唤醒,而其他线程只是等待? 旋转? 有人可以让事情更清楚吗? 编辑 http://www.albahari.com/threading/part2.aspx

EF,Code First – 如何在插入时设置自定义Guid标识值

在处理在Guid作为主键的数据库中插入新实体时,我面临以下问题 – 使用Code第一种方法的EF 5 。 我知道有很多类似的主题,因为我在这个问题上已经流了好几个小时,但是我找不到这个问题的主题。 举个例子,我的POCO课程是: public class EntityRole : IAdminModel { [Key] [DatabaseGenerated(DatabaseGeneratedOption.Identity)] public Guid Id { get; set; } [Required] [MaxLength(50)] public string Name { get; set; } [Required] [Display(Name = “Role code”)] [MaxLength(20)] public string RoleCode { get; set; } [Display(Name = “Entities Assigned”)] [InverseProperty(“Role”)] public List Entities { get; set; […]

我可以获得内存映射文件的路径吗? (.NET 4.0)

我希望非.NET应用程序访问内存映射文件, 但是这个应用程序不知道内存映射文件的存在 ,所以我需要文件路径。 有可能的?

应该返回Task的方法抛出exception吗?

返回Task的方法有两个报告错误的选项: 立刻抛出exception 返回将以exception结束的任务 调用者是否应该期望两种类型的错误报告,或者是否有某些标准/协议将任务行为限制为第二个选项? 例: class PageChecker { Task CheckWebPage(string url) { if(url == null) // Argument check throw Exception(“Bad URL”); if(!HostPinger.IsHostOnline(url)) // Some other synchronous check throw Exception(“Host is down”); return Task.Factory.StartNew(()=> { // Asynchronous check if(PageDownloader.GetPageContent(url).Contains(“error”)) throw Exception(“Error on the page”); }); } } 处理这两种类型看起来很难看: try { var task = pageChecker.CheckWebPage(url); task.ContinueWith(t => […]

Func 的List ,使用generics返回类型编译错误,但为什么呢?

这是一个冗长的问题,所以请耐心等待。 我需要在一组字符串和每个字符串的相应generics方法调用之间创建一个映射。 但是,我遇到了编译问题,向下解释。 在我的场景中,我使用的是Dictionary ,但问题对于List同样存在。 为简单起见,我在下面的示例中使用List 。 考虑这三个类: public abstract class MyBase { /* body omitted */ } public class MyDerived1 : MyBase { /* body omitted */ } public class MyDerived2 : MyBase { /* body omitted */ } 还有一些其他类的方法: public class Test { public T GetT() where T : MyBase { /* body […]

.net构造for while循环与超时

我通常使用while循环继续尝试某些操作,直到操作成功或超时已经过去: bool success = false int elapsed = 0 while( ( !success ) && ( elapsed < 10000 ) ) { Thread.sleep( 1000 ); elapsed += 1000; success = … some operation … } 我知道有几种方法可以实现这一点,但基本的一点是,我反复尝试一些操作,一直睡到成功,或者我睡得太久了。 是否有一个内置的.net类/方法/等来避免我在整个地方重写这个模式? 也许输入是一个Func(bool)和超时? 编辑 感谢所有贡献者。 我选择了sleep()方法,因为它是最不复杂的,我完全反复杂性=)这是我的(仍然需要测试)实现: public static bool RetryUntilSuccessOrTimeout( Func task , TimeSpan timeout , TimeSpan pause ) { if […]

打破内部foreach循环并继续外部foreach循环

如果我有一个嵌套的foreach循环,我怎么做打破内循环并告诉外部继续在那一点没有在内循环下面做任何其他代码? foreach(var item in items) { foreach(var otheritem in otheritems) { if (!double.TryParse(otheritem)) { //break inner loop //continue outer loop so we never get to DoStuff() } } DoStuff(); }