C#中的“同步”功能?

时间:2011-11-08 13:33:08

标签: c# multithreading synchronization

我正在创建一个自定义状态机,为了成为决定论者,我必须“同步”我的转换。我不确定“同步”这个词,但我想要的是当我调用一个函数(通过EventHandler)时,系统就像冻结之前我可以调用另一个函数(通过EventHandler)。

用英语解释它有点难,但我想你知道我的意思......

我在考虑线程,但我真的想避免这种情况......

3 个答案:

答案 0 :(得分:1)

如果您希望模拟java中“synchronized”关键字的效果,最好的办法是将整个方法代码包装在内部

lock(this)
{
    // code
}

答案 1 :(得分:1)

不确定这是否是您要找的,但C#迭代器块基本上是state machines

答案 2 :(得分:0)

同步是指您处于多线程环境中并且需要通过同步的线程(一次1个)访问资源。这可确保在线程更改资源而其他线程尝试访问它们时无法实现不可预测的结果。 C#中有许多可用于处理同步的构造。这完全取决于你的线程试图完成的任务。

以下是来自MSDN的链接,其中显示了一些简单示例:http://msdn.microsoft.com/en-us/library/ms173179.aspx