Take the following examples:
List<MyObject> objects = new List<MyObject();
Example #1:
static class MyClass1
{
    static void MyMember(List<MyObject> objects) { objects.Add(new MyObject); }
}
Example #2:
class MyClass2
{
    void MyMember(List<MyObject> objects) { objects.Add(new MyObject); }
}
Example #3:
static MyClass3 myClass3 = new MyClass3();
class MyClass3
{
    void MyMember(List<MyObject> objects) { objects.Add(new MyObject); }
}
and then calling
 Task.Factory.StartNew(() =>
 {
    MyClass1.MyMember(objects);
 });
or
 MyClass2 myClass2 = new MyClass2();
 Task.Factory.StartNew(() =>
 {
    myClass2.MyMember(objects);
 });
or
 static MyClass3 myClass3 = new MyClass3();
 Task.Factory.StartNew(() =>
 {
    myClass3.MyMember(objects);
 });
Assuming that the application will only have one of these examples, and that the Task is called multiple times simultaneously.
You could think of this as a console app where List<MyObject> objects is instantiated in the Main(), same goes for the tasks, called in Main() multiple times simultaneously.
 
     
     
    