在我的多线程 c# 应用程序中使用 Microsoft Solver Foundation 时遇到问题:
我同时运行两个线程,并且在每个线程上我调用这样的函数:
private void exampleFunction()
{
SolverContext context;
Model model;
for(int i=0;i<10;i++)
{
context = SolverContext.GetContext();
model = context.CreateModel();
//adding decisions, constraints and goal to model
Solution sol = context.Solve();
string s = sol.Quality.ToString();//and here sometimes I get that sol is null!
context.ClearModel();
}
}
看起来我在每个线程中的上下文都是同一个对象,所以当我调用
context.ClearModel();
在thread1中,那么在thread2中也很清楚(即使thread2中的问题还没有解决)。
那么问题来了:有没有办法在 MSF 中同时解决两个模型?是否可以声明两个不同的 SolverContext?