草庐IT

core-thread-operations

全部标签

c# - asp.net core 在上一个操作完成之前在此上下文中开始第二个操作

我有一个ASP.NetCore2Web应用程序。我正在尝试创建一个自定义路由中间件,这样我就可以从数据库中获取路由。在ConfigureServices()我有:services.AddDbContext(options=>options.UseMySQL(configuration.GetConnectionString("ConnectionClient")));services.AddScoped();在Configure()中:app.UseMvc(routes=>{routes.Routes.Add(newRouteCustom(routes.DefaultHandler);

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

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

c# - ASP.Net Core 应用程序中 LocalAppData 的路径

我有一个ASP.NetCore应用程序,出于当前目的,我必须使用LocalAppData。通常我会写Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData),但遗憾的是它不适用于ASP.NetCore。谁能帮我解决这个问题?更新感谢AdemCaglin,我找到了解决方案。我使用的代码:Environment.GetEnvironmentVariable(RuntimeInformation.IsOSPlatform(OSPlatform.Windows)?"LocalAppData":"主页");

c# - 懒惰<T> : "The function evaluation requires all threads to run"

我有一个带有一些静态属性的静态类。我在一个静态构造函数中初始化了所有这些,但后来意识到这是浪费,我应该在需要时延迟加载每个属性。所以我转而使用System.Lazytype来完成所有肮脏的工作,并告诉它不要使用它的任何线程安全功能,因为在我的例子中执行总是单线程的。我得到了以下类(class):publicstaticclassQueues{privatestaticreadonlyLazyg_Parser=newLazy(()=>newQueue(Config.ParserQueueName),false);privatestaticreadonlyLazyg_Distributor

c# - 有没有办法让控制台应用程序仅使用 .NET Core 中的单个文件运行?

在.NETFramework中,您可以创建单个.EXE将从命令行运行的文件,无需任何额外的配置文件(如果使用ILMerge,您可以将所有.DLL引用放入1.EXE程序集)。我正在尝试使用.NETCore来完成同样的事情,但到目前为止还没有成功。即使是最简单的HelloWorld没有依赖项的应用程序需要有一个名为.runtimeconfig.json的文件为了使用dotnet.exe运行.dotnetF:\temp\MyApp.dll.runtimeconfig.json的内容如下:{"runtimeOptions":{"framework":{"name":"Microsoft.NET

c# - Thread.Abort() 是如何工作的?

我们通常在将无效输入传递给方法或对象即将进入无效状态时抛出异常。让我们考虑以下示例privatevoidSomeMethod(stringvalue){if(value==null)thrownewArgumentNullException("value");//Methodlogicgoeshere}在上面的示例中,我插入了一个抛出ArgumentNullException的throw语句。我的问题是运行时如何设法抛出ThreadAbortException。显然不可能在所有方法中都使用throw语句,甚至运行时也设法在我们的自定义方法中抛出ThreadAbortException。

c# - 是否可以在 Entity Framework Core 中创建基于字符串的 Include 替代方案?

在API上我需要动态包含,但EFCore不支持基于字符串的包含。因此,我创建了一个映射器,它将字符串映射到添加到列表中的lambda表达式,如下所示:List>expressions=newList>();考虑以下特定类型:publicclassEFContext{publicDbSetP1s{get;set;}publicDbSetP2s{get;set;}publicDbSetP3s{get;set;}}publicclassP1{publicP2P2{get;set;}publicP3P3{get;set;}}publicclassP2{publicP3P3{get;set;}}

c# - ASP.NET Core 中的 ConfigureServices() 和 Configure() 有什么区别?

learn.microsoft.com上的文档说明如下:UseConfigureServicesmethodtoaddservicestothecontainer.UseConfiguremethodtoconfiguretheHTTPrequestpipeline.谁能用简单的例子解释一下,什么是向容器添加服务,什么是配置HTTP请求管道? 最佳答案 简而言之:ConfigureServices用于配置依赖注入(inject)publicvoidConfigureServices(IServiceCollectionservice

c# - 我应该如何在 MVC Core 中管理 DbContext 生命周期?

来自DocumentationEntityFrameworkcontextsshouldbeaddedtotheservicescontainerusingtheScopedlifetime.Thisistakencareofautomaticallyifyouusethehelpermethodsasshownabove.RepositoriesthatwillmakeuseofEntityFrameworkshouldusethesamelifetime.我一直认为,我应该为我必须处理的每个工作单元创建一个新的Context。这让我想到,如果我有一个ServiceA和Service

c# - Entity Framework Core 计数没有最佳性能

我需要使用特定过滤器获取记录的数量。理论上这条指令:_dbContext.People.Count(w=>w.Type==1);它应该生成如下SQL:Selectcount(*)fromPeopleWhereType=1然而,生成的SQL是:SelectId,Name,Type,DateCreated,DateLastUpdate,AddressfromPeopleWhereType=1正在生成的查询需要更长的时间才能在包含许多记录的数据库中运行。我需要生成第一个查询。如果我这样做:_dbContext.People.Count();EntityFramework生成以下查询:Sele