using System;
using System.Threading;
public class Work
{
public static void Main()
{
// Start a thread that calls a parameterized static method.
Thread newThread = new Thread(Work.DoWork);
newThread.Start(42);
// Start a thread that calls a parameterized instance method.
Work w = new Work();
newThread = new Thread(w.DoMoreWork);
newThread.Start("The answer.");
}
public static void DoWork(object data)
{
Console.WriteLine("Static thread procedure. Data='{0}'",
data);
}
public void DoMoreWork(object data)
{
Console.WriteLine("Instance thread procedure. Data='{0}'",
data);
}
}
// This example displays output like the following:
// Static thread procedure. Data='42'
// Instance thread procedure. Data='The answer.'
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uVGhyZWFkaW5nOwoKcHVibGljIGNsYXNzIFdvcmsKewogICAgcHVibGljIHN0YXRpYyB2b2lkIE1haW4oKQogICAgewogICAgICAgIC8vIFN0YXJ0IGEgdGhyZWFkIHRoYXQgY2FsbHMgYSBwYXJhbWV0ZXJpemVkIHN0YXRpYyBtZXRob2QuCiAgICAgICAgVGhyZWFkIG5ld1RocmVhZCA9IG5ldyBUaHJlYWQoV29yay5Eb1dvcmspOwogICAgICAgIG5ld1RocmVhZC5TdGFydCg0Mik7CgogICAgICAgIC8vIFN0YXJ0IGEgdGhyZWFkIHRoYXQgY2FsbHMgYSBwYXJhbWV0ZXJpemVkIGluc3RhbmNlIG1ldGhvZC4KICAgICAgICBXb3JrIHcgPSBuZXcgV29yaygpOwogICAgICAgIG5ld1RocmVhZCA9IG5ldyBUaHJlYWQody5Eb01vcmVXb3JrKTsKICAgICAgICBuZXdUaHJlYWQuU3RhcnQoIlRoZSBhbnN3ZXIuIik7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyB2b2lkIERvV29yayhvYmplY3QgZGF0YSkKICAgIHsKICAgICAgICBDb25zb2xlLldyaXRlTGluZSgiU3RhdGljIHRocmVhZCBwcm9jZWR1cmUuIERhdGE9J3swfSciLAogICAgICAgICAgICBkYXRhKTsKICAgIH0KCiAgICBwdWJsaWMgdm9pZCBEb01vcmVXb3JrKG9iamVjdCBkYXRhKQogICAgewogICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKCJJbnN0YW5jZSB0aHJlYWQgcHJvY2VkdXJlLiBEYXRhPSd7MH0nIiwKICAgICAgICAgICAgZGF0YSk7CiAgICB9Cn0KLy8gVGhpcyBleGFtcGxlIGRpc3BsYXlzIG91dHB1dCBsaWtlIHRoZSBmb2xsb3dpbmc6Ci8vICAgICAgIFN0YXRpYyB0aHJlYWQgcHJvY2VkdXJlLiBEYXRhPSc0MicKLy8gICAgICAgSW5zdGFuY2UgdGhyZWFkIHByb2NlZHVyZS4gRGF0YT0nVGhlIGFuc3dlci4n