using System; | |
using System.Threading.Tasks; | |
using System.Threading; | |
namespace examples | |
{ | |
class Foo | |
{ | |
public int bar = 1; | |
} | |
class Program | |
{ | |
static void RT(Action action, int seconds, CancellationToken token) | |
{ | |
if (null == action) | |
{ | |
return; | |
} | |
Task.Run(async () => | |
{ | |
while (!token.IsCancellationRequested) | |
{ | |
action(); | |
await Task.Delay(TimeSpan.FromSeconds(seconds), token); | |
} | |
}); | |
} | |
static void Main(string[] args) | |
{ | |
Console.WriteLine("Hello World!"); | |
string accessKey = "key"; | |
string accessSecret = "secret"; | |
var credentials = new Org.Apache.Rocketmq.StaticCredentialsProvider(accessKey, accessSecret).getCredentials(); | |
bool expired = credentials.expired(); | |
int workerThreads; | |
int completionPortThreads; | |
ThreadPool.GetMaxThreads(out workerThreads, out completionPortThreads); | |
Console.WriteLine($"Max: workerThread={workerThreads}, completionPortThreads={completionPortThreads}"); | |
ThreadPool.GetMinThreads(out workerThreads, out completionPortThreads); | |
Console.WriteLine($"Min: workerThread={workerThreads}, completionPortThreads={completionPortThreads}"); | |
ThreadPool.QueueUserWorkItem((Object stateInfo) => | |
{ | |
Console.WriteLine("From ThreadPool"); | |
if (stateInfo is Foo) | |
{ | |
Console.WriteLine("Foo: bar=" + (stateInfo as Foo).bar); | |
} | |
}, new Foo()); | |
var cts = new CancellationTokenSource(); | |
RT(() => | |
{ | |
Console.WriteLine("Hello Again" + Thread.CurrentThread.Name); | |
}, 1, cts.Token); | |
cts.CancelAfter(3000); | |
Console.ReadKey(); | |
} | |
} | |
} |