等到数据库中的列值更新后,c#才返回值
本文关键字:返回值 更新 数据库 | 更新日期: 2023-09-27 18:08:05
请查看下面一行代码
int latestTaskId = _repo.GetLatestTaskID(bookingRequest.CaseId);
根据上面的代码,我们正在尝试从SQL Server数据库检索latestTaskId
。如果数据库中的latestTaskId为空,我们需要保持这一行的执行。
当数据库中的latestTaskId
被其他代码更新后,GetLatestTaskID
方法应该返回latestTaskId
,并继续执行下一条语句。
谁能提出一个合适的,性能有效的解决方案来满足这一要求?
提前感谢!:)
使用
Context.Entry<T>(entity).Reload()
和查询的整数,如果值没有更新重新加载。
您可以使用ManualResetEventSlim
来实现此目的。ManualResetEventSlim.Wait()
将阻塞线程的执行,直到ManualResetEventSlim.Set()
被调用。
所以在_repo.GetLatestTaskID(bookingRequest.CaseId);
之前调用ManualResetEventSlim.Wait()
。不要忘记在更新数据库中的Lastest Task Id
之后调用ManualResetEventSlim.Set()
。
的例子:
public class Program
{
static ManualResetEventSlim latestIDIisNotNUll = new ManualResetEventSlim();
public static void Main()
{
Task.Run(() =>
{
Thread.Sleep(5000);
UpdateLatestTaskID();
});
int latestTaskId = GetLatestTaskID();
Console.WriteLine("Latest Task ID: " + latestTaskId);
Console.ReadLine();
}
private static void UpdateLatestTaskID()
{
//Your update code
Console.WriteLine("Latest ID is set");
latestIDIisNotNUll.Set();
}
private static int GetLatestTaskID()
{
Console.WriteLine("Wating for latest ID");
latestIDIisNotNUll.Wait();
int latestTaskId = 5;//_repo.GetLatestTaskID(bookingRequest.CaseId);
return latestTaskId;
}
}