这个方法,如何执行
这个方法,怎么执行?
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,在一个进程占用资源的时候,其他请求进程排队,这样有效实现进程间数据共享。
------解决思路----------------------
就是要加锁,才能让其他执行这个方法的线程 在等待,直到这个方法执行完了。其他线程 才能让他进来。。
------解决思路----------------------
先说你想怎么调用,再问如何避免同时执行
如果你就是顺序调用的A();B();C();
那么根本就什么都不用做.
而且即使你使用多线程访问,也要看这个函数里面到底干了什么
如果跟全局资源无关的操作(全局资源包括全局变量,静态变量,IO设备),也根本不需要什么顺序执行,并发执行也不会有任何问题
------解决思路----------------------
不知道你所谓滴顺序到底是什么,是一次就运行一个,还是按A,B,C滴顺序执行
如果是前一个那么请lock,如果是后一个直接Task.waitfor
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,在一个进程占用资源的时候,其他请求进程排队,这样有效实现进程间数据共享。
------解决思路----------------------
就是要加锁,才能让其他执行这个方法的线程 在等待,直到这个方法执行完了。其他线程 才能让他进来。。
------解决思路----------------------
先说你想怎么调用,再问如何避免同时执行
如果你就是顺序调用的A();B();C();
那么根本就什么都不用做.
而且即使你使用多线程访问,也要看这个函数里面到底干了什么
如果跟全局资源无关的操作(全局资源包括全局变量,静态变量,IO设备),也根本不需要什么顺序执行,并发执行也不会有任何问题
------解决思路----------------------
不知道你所谓滴顺序到底是什么,是一次就运行一个,还是按A,B,C滴顺序执行
如果是前一个那么请lock,如果是后一个直接Task.waitfor