小编Sun*_*gid的帖子

异步Web请求,EntityFramework和DI,它是如何工作的?

我搜索了很多关于这些主题的内容,但我仍然不确定它是否按预期工作.为什么呢.

我的理解:

  • 处理Web请求时,您正在使用其池中的一个IIS线程.在该请求中,如果您使用异步调用(例如,从数据库查询某些数据),则释放该线程,以便IIS可以使用该相同的线程来处理另一个调用.非常好.大概.
  • 一段时间后,当数据库最终提供等待的数据时,代码将恢复.异步文档提到您现在可能在另一个线程中.或不.DotNet的决定.如果它与以前在同一个线程中,那没关系.
  • 我使用依赖注入在PerRequest生命周期中注入和关闭上下文(使用Microsoft Unity).关闭是我的主要关注点.它在我的同步世界中完美运行:dbcontext在我的Web请求结束时关闭.
  • 已知EntityFramework的DbContext不是线程安全的

问题1:现在,如果恢复代码在另一个线程中,它是否来自同一个线程池,IIS必须处理所有请求,还是来自另一个侧池?

问题2:如果代码在另一个线程中运行,那么WebRequest上下文呢?DI会在异步代码真正结束之前正确跟踪延迟调用的结束而不调用Dispose()吗?

问题3:如果我使用EntityFramework的异步方法,比如ToListAsync或FirstOrDefaultAsync,我会在任何地方读到"它应该没问题".有人可以详细说明吗?EF是否专门跟踪Web请求或初始线程?是否有某种捕获事件发生?我的dbcontext是否会与另一个重用我的初始线程的Web请求混淆?

问题4:如果我使用EntityFramework的普通(sync)方法但包含在Task中.什么会发生?它仍然是"它应该没问题"?

对不起,这是很多问题,很长一段时间以来一直困扰着我.

c# asp.net multithreading asynchronous entity-framework

5
推荐指数
1
解决办法
214
查看次数

如何启动相同的活动甚至应用程序在后台?

我的应用程序中有3个活动,登录,A和B.登录活动是我的启动器页面.登录后,它会重定向到活动A.现在点击主页按钮,它会暂停活动A并转到后台,然后点击应用程序图标重新启动活动A.我需要启动登录活动,即使活动A在背景.我怎样才能做到这一点,请帮帮忙?

android

1
推荐指数
1
解决办法
736
查看次数