这个方法,如何执行

这个方法,怎么执行?
Public Void GetNumber()
{
   .........
}


Public Void A()
{
    GetNumber();
}
Public Void B()
{
    GetNumber();
}
Public Void C()
{
    GetNumber();
}
  

方法A、B、C同时调用方法GetNumber,为了使GetNumber方法能有序的执行,也就是说,要等前一次执行完之后,在执行下一次。
我的想法是在异步线程中去执行,用backgroundworker的IsBusy属性判断一下上一次是否执行完。但是要持续不断地去判断,是不是只有通过计时器去执行呢,方法A、B、C里面都要定义计时器吗?是否有其他办法呢,比如轮询之类的?不用计时器


------解决思路----------------------
多播委托你值得拥有。
------解决思路----------------------
那你定义一个
public static object lockObj=new object();

Public Void GetNumber()
{
    lock(lockObj)
    {
         这里你的业务代码;
    }
}


------解决思路----------------------
里面加lock……
------解决思路----------------------
使用lock,在一个进程占用资源的时候,其他请求进程排队,这样有效实现进程间数据共享。
------解决思路----------------------
引用:
Quote: 引用:

那你定义一个
public static object lockObj=new object();

Public Void GetNumber()
{
    lock(lockObj)
    {
         这里你的业务代码;
    }
}

你这个加锁,那怎么问呢?比如方法A正在执行GetNumber方法,方法B怎么知道它执行完了呢


就是要加锁,才能让其他执行这个方法的线程 在等待,直到这个方法执行完了。其他线程 才能让他进来。。
------解决思路----------------------
先说你想怎么调用,再问如何避免同时执行

如果你就是顺序调用的A();B();C();
那么根本就什么都不用做.

而且即使你使用多线程访问,也要看这个函数里面到底干了什么
如果跟全局资源无关的操作(全局资源包括全局变量,静态变量,IO设备),也根本不需要什么顺序执行,并发执行也不会有任何问题
------解决思路----------------------
不知道你所谓滴顺序到底是什么,是一次就运行一个,还是按A,B,C滴顺序执行
如果是前一个那么请lock,如果是后一个直接Task.waitfor