我正在编写一个具有分层通信接口的应用程序。
这样做是为了从应用程序的用户界面部分抽象通信,并使其更具可扩展性/可维护性。
例如:
将上图中的每个框视为一个单独的类。
通用通信接口填充描述交易数据和通信“健康”的字符串变量,这些变量又通过一系列公共函数调用复制到应用程序。例如,应用程序会调用 App-Sub-System:
class Application
{
private void SomeUpdateFunction()
{
this.textBox1.AppendText(this.AppSubSystem.GetText());
}
}
class AppSubSystem
{
public string GetText()
{
return this.GenericCommsInterface.GetText();
}
}
class GenericCommsInterface
{
public string GetText()
{
string sRetVal = this.sText; // sText is populated by other functions in the class.
this.sText = null; // Suspected race condition is here.
return sRetVal;
}
}
sText
由类中的其他函数异步填充。我相信在和下一行
之间发生了竞争情况。
有人可以建议一种避免或防止这种竞争状况的方法吗?会使用帮助,还是我应该这样做的另一种方式?string sRetVal = this.sText;
this.sText = null;
StringBuilder