草庐IT

core-thread-operations

全部标签

c# - 什么时候用Task,什么时候用Thread?

我刚刚问了有关Task的问题,但意识到我实际上想问更一般的问题。有人可以总结一下任务和线程的优缺点。如何理解我应该使用任务还是线程? 最佳答案 Task是以异步方式执行某事的命令。Thread实际上是OS内核对象,它执行所请求的内容。将Task想象成一个聪明的线程聚合器/组织器,它“知道”在您的CPU上同时运行多少任务更好。它只是比多线程的常见实现更聪明(这就是为什么建议选择Microsoft的原因)。此功能可帮助您以更轻松的方式管理Threads。也看看这个ShouldiuseThreadPoolsorTaskParallelLi

c# - 为什么 GC System.Threading.OverlappedData 需要这么长时间?

我正在通过内存分析器运行我的应用程序以检查是否有泄漏。事情似乎有点好,但我得到了很多这些OverlappedData,它们似乎在终结器队列中徘徊,几乎什么都不做。它们是重叠IO的结果,已通过关闭连接两端的底层NetworkStream取消。网络流本身被释放。任何地方都没有NetworkStream的实时实例。通常,它们Root于称为OverlappedDataCacheLine的东西。我做的第一件事就是在回调中调用EndRead,所以没有调用BeginRead应该没有相应的EndRead。这是一个非常典型的外观,表明谁将它从工具中取出最后它确实得到了GC,但它需要永远-当我开始大约一千

c# - .NET 4.5 中的代码契约 + 异步 : "The method or operation is not implemented"

在Windows7x64上的VS2012中使用CodeContracts1.4.51019.0时,我从ccrewrite收到以下编译错误:“方法或操作未实现."这似乎是由属性访问器的组合和使用缺少内部await的async方法引起的。复制步骤:创建一个启用“完整”运行时契约检查的新类库:namespaceCodeContractsAsyncBug{usingSystem.Threading.Tasks;publicclassService{//Offendingmethod!publicasyncTaskProcessAsync(Entityentity){varflag=entity

c# - 如何优雅地停止 System.Threading.Timer?

我有一个用C#实现的Windows服务,它需要经常做一些工作。我已经使用System.Threading.Timer实现了这一点,该回调方法负责安排下一个回调。我无法优雅地停止(即处理)计时器。以下是您可以在控制台应用程序中运行的一些简化代码,可以说明我的问题:constinttickInterval=1000;//onesecondtimer=newTimer(state=>{//simulatesomeworkthattakestensecondsThread.Sleep(tickInterval*10);//whentheworkisdone,schedulethenextcal

c# - 从 WindowsIdentity 和 Thread.CurrentPrincipal 检索 WindowsPrincipal 之间有什么区别?

我正在尝试弄清楚为什么基于属性的安全性在WCF中没有像我预期的那样工作,我怀疑它可能与以下内容有关:AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);varidentity=newWindowsIdentity("ksarfo");varprincipal=newWindowsPrincipal(identity);Console.WriteLine("\nCheckingwhethercurrentuser["+identity.Name+"]ismemberof["+groupN

c# - 启用 asp.net core 请求验证

我是不是遗漏了什么或者asp.netcore允许在用户文本字段中发布脚本标签?在以前版本的asp.netmvc中,我需要通过[AllowHtml]属性允许它。有没有办法再次启用对潜在危险值的验证?我可以自由提交值,例如在表单发布期间。型号:usingSystem.ComponentModel.DataAnnotations;namespaceTest.Models{publicclassTestModel{[MaxLength(500)]publicstringContent{get;set;}}}Controller:usingMicrosoft.AspNetCore.Mvc;usi

c# - 如何将 Web API Controller 添加到现有的 ASP.NET Core MVC?

我使用默认的ASP.NETCoreMVC模板创建了一个项目。我还想在/api/{Controller}下创建一个RESTfulAPI。我添加了一个新的WebAPIController(标准WebAPIController类模板),但我无法调用它。我收到一条错误消息,指出无法找到该页面。我尝试在Startup.cs中添加路由,但它没有执行任何操作:app.UseMvc(routes=>{routes.MapRoute(name:"default",template:"{controller=Home}/{action=Index}/{id?}");routes.MapRoute(name

c# - is-operator 的最佳用法是什么

is运算符的好的用法是什么?下面的转换构造不是推荐的方法,几乎​​所有文档都更喜欢带有null检查的as-operator。if(objisSomeClass){SomeClasssome=(SomeClass)obj;....}当然这是一个(非常小的)性能提升,有些甚至提到了胎面安全性。是的,这是真的......那么,为什么我们要有is运算符?“带有空检查的运算符(operator)”在哪里不起作用或不是可行的方法?使用is运算符限制声明的范围是否有优势? 最佳答案 as不适用于不可为null的struct:objecto=123

c# - 在 asp .net core 中为 MediatR 库的 Send 和 Publish 方法添加通用处理程序

我在我的asp.net核心项目中使用CQS模式。让我们从一个例子开始,以更好地解释我想要实现的目标。我创建了一个命令:publicclassEmptyCommand:INotification{}命令处理程序:publicclassEmptyCommandHandler:INotificationHandler{publicTaskHandle(EmptyCommandnotification,CancellationTokencancellationToken){returnTask.FromResult(string.Empty);}}查询:publicclassEmptyQuer

c# - 如何将文件作为链接添加到 .NET Core 库中?

我已经在我的解决方案中添加了一个.NETCoreRC2类库(为了好玩),我通常做的第一件事是添加一个指向共享GlobalAssemblyInfo.cs的链接并编辑现有的AssemblyInfo.cs到程序集细节。所以我刚刚完成“添加”->“现有项目”,找到我的文件并单击添加按钮的下拉菜单。没有“添加为链接”选项。这是怎么回事?我如何使用.NETCore执行此操作? 最佳答案 我认为工具还不支持这一点,不幸的是,文档还不是最新的。但是,您可以从这个ASP.NETCoreannouncement了解这是如何工作的.基本上,您可以将单个文