jjzjj

c# - 使用 Thread.Sleep 等待的替代方法

首先,我问的不是与C#-AlternativetoThread.Sleep?相同的问题,或AlternativetoThread.SleepinC#?.我认为我没有错误地使用它,并且在特定情况下需要一个真正的替代品。在代码分析运行期间,我看到了一个令人惊讶的违规行为:UsageofThread.Sleep()isasignofflaweddesign.此违规导致PeterRichie'sarticle关于为什么这构成糟糕的设计。我们都知道线程创建是昂贵的,线程中的阻塞意味着对池的争用。我们也知道每个线程都会分配一个meg的内存,所以它应该有一个短的生命周期,阻塞在UI上是邪恶的

c# - DDD 与 EF Code First - 如何将它们放在一起?

学习DDD开发这几天,开始喜欢上了。我(认为我)了解DDD的原则,您的主要关注点是业务对象,您有聚合、聚合根、仅用于聚合根的存储库等等。我正在尝试创建一个将DDD开发与代码优先方法相结合的简单项目。我的问题是:(我正在使用asp.netMVC)DDD业务对象与CodeFirst对象不同吗?即使它们可能相同,例如我可以有一个包含所有规则和方法的Product业务对象,并且我可以先有一个Product代码(POCO)对象,它只包含我需要保存在数据库中的属性。如果问题1的答案是“真”,那么我如何通知ProductPOCO对象业务对象Product的属性已更改,并且我必须更新它吗?我正在使用“

c# - 将文件添加到现有Zip中-性能问题

我有一个WCFWeb服务,可将文件保存到文件夹(大约200,000个小文件)。之后,我需要将它们移至另一台服务器。我发现的解决方案是将它们压缩然后移动。当我采用此解决方案时,我使用了20,000个文件进行了测试,压缩20,000个文件仅花费了大约2分钟的时间,并且移动zip确实非常快。但是在生产中,压缩200,000个文件需要2个多小时。这是我压缩文件夹的代码:using(ZipFilezipFile=newZipFile()){zipFile.UseZip64WhenSaving=Zip64Option.Always;zipFile.CompressionLevel=Compress

C# 登录并上传到 OneDrive 无需用户交互

我目前正在开发一项Windows服务,该服务将检查和更新Excel文件并将它们上传到选定的云存储-SharePoint或OneDrive。整个过程应该是全自动的,无需任何用户交互-所有必需的信息(用户名、密码等)都是配置文件的一部分。除OneDrive部分外,一切进展顺利。我无法找到一个全自动的解决方案来登录和上传到这个云存储。我知道MicrosoftLiveSDK,但它对非WinPhone和-WinStore应用程序的支持减少了,而且据我所知,它总是要求用户输入用户名、密码(网络浏览器组件)。第二个选项是SkyDriveClientAPI(linkhere),但此API不再有效(如问

c# - .NET 中的变量新鲜度保证( volatile 与 volatile 读取)

我已经阅读了许多关于volatile和VoletileRead(ReadAcquireFence)的相互矛盾的信息(msdn、SO等)。我理解那些内存访问重新排序限制的含义-我仍然完全困惑的是新鲜度保证-这对我来说非常重要。msdndocforvolatile提及:(...)Thisensuresthatthemostup-to-datevalueispresentinthefieldatalltimes.msdndocforvolatilefields提及:Areadofavolatilefieldiscalledavolatileread.Avolatilereadhas"

c# - 与 Contract.Requires<T> 相比抛出异常?

我想知道我是应该抛出异常还是调用Contract.Requires<TException>例如:publicstaticvoidFunction(Stringstr){if(str==null)thrownewArgumentNullException("str","Inputstringcannotbenull.");//...}对比publicstaticvoidFunction(Stringstr){Contract.Requires<ArgumentNullException>(str!=null,"Inputst

c# - 在 C# 中是否可以编译时访问行号?

我正在使用VisualStudio2010编写一个C#程序,我想在其中将某些事件写入日志文件,并包括发生该事件时代码所在的行号。我只找到了两种捕获行号的方法-CallerLineNumber,它需要.Net4.5/C#5(我的目标是.Net4)和StackFrame.GetFileLineNumber,这显然需要一个调试版本和pdb文件来工作正常,我正在生成一个发布版本,但没有pdb文件。但这是我没有得到的-以上都是运行时解决方案,但行号是编译时实体。为什么需要运行时解决方案?我可以输入正确的行号作为文字常量,只需查看屏幕底部,它会显示类似“ln175”的内容。..LogEvent(&

c# - Asp.net Mvc、Razor 和本地化

我知道这个问题已经在这些页面上提到过很多次了,但我仍然没有找到我需要找到的“好的解决方案”。让我们开始解释吧。.net和mvc中的本地化是通过两种甚至可以混合在一起的方式进行的:资源文件(本地或全局)使用View引擎本地化View以根据文化调用适当的View我将解释我尝试过的解决方案以及我遇到的所有问题。资源文件中的文本,View中的所有标签这个解决方案会让我把每个文本都放在资源中,每个标签都放在View中,甚至是[strong]或[span]这样的内联标签。优点:清晰的分离,在本地化中没有任何结构。轻松编码:从资源返回的所有内容都经过html编码。缺点:如果我有一个包含一些强项、几个

c# - 无法从用法中推断出开放泛型类型参数

在这个问题中,当提到编译器时,我实际上指的是Roslyn编译器。使用IntelliSense时会出现问题,这被认为是相同的编译器。出于演示目的和完整性,使用了以下类(使用带有C#6.0和.NET4.6.1的VisualStudio2015):publicclassA{publicIEnumerable<B>B{get;set;}}publicclassB{publicIEnumerable<C>C{get;set;}}publicclassC{}publicclassHelper<T>{}看下面的扩展方法:publicstaticvoidFooBar

c# - 我可以告诉 bindingRedirect 始终使用最新的可用版本吗?

对于ASP.NET应用程序,Web.Config文件中有几个条目,格式如下:<dependentAssembly><assemblyIdentityname="WebGrease"publicKeyToken="31bf3856ad364e35"/><bindingRedirectoldVersion="0.0.0.0-1.6.5135"newVersion="1.6.5135"/></dependentAssembly>这些库以NuGet包的形式出现。现在每次更新我的20多