How can I make some lines of code to run only one time
c#
Solution
You need to be careful on how strictly the “only one time” restriction is to be interpreted. Static methods are generally assumed to be thread-safe; if you really want to ensure that your method is only run once, even in the case of racing threads, then you need to use a synchronization mechanism, the simplest example being a `lock`:
private static bool isRun = false;
private static readonly object syncLock = new object();
public void MyMethod()
{
lock (syncLock)
{
if (!isRun)
{
Foo();
isRun = true;
}
}
}
Problem
Two classes in the same assembly: `Class A` and `Static` `Class B` In a method of `ClassA`, I am calling a method in `ClassB`,... but I want that to be called only one time and not every single time that I am caling that method of `ClassA` ... currently I am setting a global property -Ran - to see if that method has been ran before or not...well it works but I feel that this is not the best design. I was wondering if there are better ways to do the same? Thanks. ``` ClassA.MyMethod(...) { .... //.... if (ClassB.Ran != 1) ClassB.Foo(); .... //... } ```