在我的下载程序中添加暂停和继续function

我正在用C#创建一个下载程序。 我正在使用WebClient类。 要在按钮上暂停下载,我可以考虑使用Thread。 因此,当我创建线程并将其与我的文件下载附加如下 WebClient web = new WebLCient(); Thread dwnd_thread = new Thread(Program.web.DownloadFileAsync(new Uri(Program.src), Program.dest)); 它给了我以下错误:“’System.Threading.Thread.Thread(System.Threading.ThreadStart)’的最佳重载方法匹配’有一些无效的参数”和“Argument’1’:无法从’void’转换为’ System.Threading.ThreadStart’”。 然后我想如果我暂停我的系统主线程然后它可以阻止我在下面的代码行使用的整个过程 System.Threading.Thread.Sleep(100); 但它什么都不做。 有人可以告诉我什么是更好的暂停/下载方法以及如何使用线程暂停我的下载过程。

#if预处理程序指令,用于DEBUG以外的指令

我知道我可以通过这样做来使用预处理器指令来检查Debug / Release: #if DEBUG //debug mode #elif //release mode #endif 但是如何检查其他配置,比如Test。 在VB中你可以这样做: #If CONFIG = “Release” Then ‘Release mode #ElseIf CONFIG = “Test” Then ‘Test mode #ElseIf CONFIG = “Debug” Then ‘Debug mode #End If 所以,我的问题是在C#中,我该如何检查测试模式? 如果我在调试和测试中,我有一些代码要执行,但不是在发布模式下,所以具体来说,我需要一种方法来检查是否处于发布模式。 在VB中我会这样做: #If Not CONFIG = “Release” Then ‘Do something here for every configuration that is not Release […]

使用ASP.NET MVC操作方法

当前情况:一个ASP.NET MVC网站,其中包含许多控制器和操作方法,以及允许添加配方的视图。 现在,我必须创建一个WPF应用程序,作为添加配方的UI(与网站相同)。 我的问题是:我可以使用ASP.NET MVC站点来公开WPF应用程序使用的服务操作(以及如何完成)? 或者我应该为此更好地创建专用的WCF服务,并让WPF和ASP.NET MVC站点使用这些服务? 谢谢,路德维希

是否可以在.NET 4中动态创建路由?

在我们的应用程序中,我们使用新的.NET 4路由系统将某些请求路由到站点的其他部分。 我们只允许在晚上发布我们的网站代码,这意味着我们必须迟到工作以发布任何代码更改。 我们经常需要创建自定义路由以支持旧内容的旧链接并将其路由到新内容。 这些通常是需要的,因为我们的路由是在编译的global.asax中定义的,当我们立即需要这些,但是不能进行代码推送时,我们会陷入僵局。 有没有办法我们可以在某种配置文件中定义路由并让网站以编程方式读取它们而无需重新启动应用程序?

如何使用Delphi 2007中的非IIS托管,WCF,C#Web服务?

我编写了一个相当简单的小型C#Web服务,通​​过WCF从独立的EXE托管。 代码 – 有点简化 – 看起来像这样: namespace VMProvisionEXE { class EXEWrapper { static void Main(string[] args) { WSHttpBinding myBinding = new WSHttpBinding(); myBinding.Security.Mode = SecurityMode.None; Uri baseAddress = new Uri(“http://bernard3:8000/VMWareProvisioning/Service”); ServiceHost selfHost = new ServiceHost(typeof(VMPService), baseAddress); try { selfHost.AddServiceEndpoint(typeof(IVMProvisionCore), myBinding, “CoreServices”); ServiceMetadataBehavior smb = new ServiceMetadataBehavior(); smb.HttpGetEnabled = true; smb.MetadataExporter.PolicyVersion = PolicyVersion.Policy12; selfHost.Description.Behaviors.Add(smb); // Add […]

我可以告诉Visual Studio不要更改项目的DPI吗?

我有一个从.NET 1.1转换为3.5的项目正在2008年开发。 如果我在Windows 7上打开项目,它会将所有内容的大小转换为120dpi大小。 如果我然后用96 dpi打开它,它会改回来。 有没有办法让我开发,所以它看起来都很好,如果在具有不同DPI的系统上打开,Visual Studio 不会更改大小? 这个问题可能更好地表达/重复: 视觉工作室设计师dpi设置 或者在这里: Visual Studio和DPI问题 要清楚我正在尝试做的是防止控件在被具有不同DPI设置的多个开发人员使用时在设计器中resize。 在我注意到这个问题的所有情况下,我一直在使用.NET 1或.NET 2项目升级到最初使用Visual Studio 2008,现在是Visual Studio 2010。 更新 (如果有人想与@Ben争夺奖励积分):我有一个正确resize的表单,但窗口的大小会以编程方式更改。 由于设计人员不知道尺寸,因此如果使用不同DPI的开发人员触摸表单,则窗口会不正确地resize。 有没有办法解决这个问题,而不是回到不在运行时缩放UI? 例如:我声明的窗口有两种尺寸,如果开发人员在设计时使用120 dpi,它可以正常工作: private static Size smallSize = new Size(960, 500); private static Size largeSize = new Size(960, 615); 如果有人在96dpi的设计师中编辑表单,我只是想绕过我需要做的事情,不要有一个可怕的设计回归。

检测c#中的驱动器挂载事件

如何在将新驱动器添加到“我的电脑”时捕获事件,并且最好在NTFS驱动器上创建某个驱动器的新安装点时? 我发现了这个,但它对挂载的文件夹不起作用: _eventWatcher = new ManagementEventWatcher(“SELECT * FROM Win32_VolumeChangeEvent”); _eventWatcher.EventArrived += (o, args) => {switch(args.NewEvent[“EventType”].ToString()[0]) { case ‘2’: //mount Debug.WriteLine(args.NewEvent[“DriveName”]); break; case ‘3’: //unmount break; } }; _eventWatcher.Start(); 有任何想法吗?

安全地检查不可重复的IEnumebles是否空虚

有时候检查一个不可重复的 IEnumerable以查看它是否为空是有帮助的。 LINQ的Any对此不起作用,因为它消耗了序列的第一个元素,例如 if(input.Any()) { foreach(int i in input) { // Will miss the first element for non-repeatable sequences! } } (注意:我知道在这种情况下没有必要进行检查 – 这只是一个例子!真实世界的例子是对一个可能为空的右手IEnumerable执行一个Zip 。如果它是空的,我希望结果是原样的左手IEnumerable 。) 我想出了一个看起来像这样的潜在解决方案: private static IEnumerable NullifyIfEmptyHelper(IEnumerator e) { using(e) { do { yield return e.Current; } while (e.MoveNext()); } } public static IEnumerable NullifyIfEmpty(this IEnumerable source) { IEnumerator e = […]

使用reflection调用包含通用参数的静态方法

执行以下代码时,我收到此错误“无法对ContainsGenericParameters为true的类型或方法执行后期绑定操作。” class Program { static void Main(string[] args) { MethodInfo MI = typeof(MyClass).GetMethod(“TestProc”); MI.MakeGenericMethod(new [] {typeof(string)}); MI.Invoke(null, new [] {“Hello”}); } } class MyClass { public static void TestProc(T prefix) { Console.WriteLine(“Hello”); } } 上面的代码只是我面临的实际问题的缩放版本。 请帮忙。

如何使用C#.NET创建.odt文件?

注意:我发现这是“在C#.NET中创建Word文档” ,但这不是我想要的。 你知道如何创建一个.odt来从C#.NET创建文件吗? 是否有OpenOffice.org库的.NET组件或包装器来执行此操作?