【发布时间】:2016-06-28 07:15:54
【问题描述】:
我创建了一个由静态类组成的 dll。我在我的 web 作业(webjob1、webjob2 等)中引用了它们,并在 azure 中创建和部署。
每个 web-job 可以同时访问一个方法。由于我们使用的是静态类,它会在堆中创建单个内存。每个网络作业都包含该静态类的参考值。我的问题是,它会产生任何问题吗?
据我了解,C# 以同步方式工作。因此,每个 web-job 将在队列中等待访问静态类的功能。因此,对该静态类的变量所做的任何更改都会反映在其他 webjobs 上。因为静态类具有独立的内存。
如果我的假设是正确的,我们为什么要保留这样的静态辅助类而不是我们可以实例化和使用的普通辅助类。
我正在创建这样的静态类,以便从我的数据库中获取一些详细信息。
public static class StaticHelper
{
public static string GetValue()
{
using(IDBContext _DbContext = new sampleDBContext())
{
}
//Acessing values through this context
}
}
【问题讨论】:
-
真的取决于你想要达到的目标。 C# 也有异步/等待模式。如果你可以在这里发布你的代码会更容易。干杯。
-
@Thomas 已更新...
-
Webjobs 不会等待访问您的静态方法。他们将同时调用它。
-
你能回答一些澄清问题来帮助我们吗? 1. 您只是将控制台应用程序作为 Web 作业运行还是使用 SDK? 2. 您的网站的多个实例怎么样 - 您是否打算向外扩展?
-
@JasonHaley 1.我们正在使用 sdk 进行网络作业。 2.关于多个实例,是的,我们在 azure 中创建同一订阅下的多个网站实例。
标签: c# multithreading azure thread-safety azure-webjobs