Showing posts with label c# threads. Show all posts
Showing posts with label c# threads. Show all posts
wcf multithreading
[ServiceBehavior(InstanceContextMode=InstanceContextMode.PerCall,
ConcurrencyMode=ConcurrencyMode.Single)]
async await c# simple example
public class MegaClass
{
public async void StartAsync()
{
await Task.Run(() => { LongProcedure(); });
Console.WriteLine("End");
}
public void Start()
{
LongProcedure();
Console.WriteLine("End");
}
private void LongProcedure()
{
Thread.Sleep(3000);
}
public async Task MyMethodAsync()
{
int x = await LongRunningOperationAsync();
Console.WriteLine(x);
}
public async Task LongRunningOperationAsync()
{
await Task.Delay(3000);
return 1;
}
public async Task LongRunningOperationAsync(int _param)
{
await Task.Delay(3000);
return _param;
}
}
class Program
{
static void Main(string[] args)
{
var _c = new MegaClass();
//1 Sync
//_c.Start();
//2 Async
//c.StartAsync();
//3 Start and return task
//Task t = _c.MyMethodAsync();
//t.Wait();
//4
//Task task = new Task(_c.StartAsync);
//task.Start();
//5 GetResult
//Task x = _c.LongRunningOperationAsync();
//x.Wait();
//Console.WriteLine(x.Result);
//6 with param
//Task x = _c.LongRunningOperationAsync(3);
//x.Wait();
//Console.WriteLine(x.Result);
Console.WriteLine("Wait");
Console.ReadLine();
}
}
c# run thread in threadpool
This is the way of running thread in ThreadPool
1 only for 4.5 Framework
1 only for 4.5 Framework
Task.Run(() => doStuff("hello world"));
2
Task.Factory.StartNew(() => doStuff("hello world"));
3
ThreadPool.QueueUserWorkItem(a => doStuff("hello world"));
4
void Example()
{
// Hook up the ProcessFile method to the ThreadPool.
// Note: 'a' is an argument name. Read more on arguments.
ThreadPool.QueueUserWorkItem(new WaitCallback(ProcessFile), a);
}
private void ProcessFile(object a)
{
// I was hooked up to the ThreadPool by WaitCallback.
}
c# timer without timer
public void OnStart() { _stop.Reset(); _registeredWait = ThreadPool.RegisterWaitForSingleObject(_stop, new WaitOrTimerCallback(PeriodicProcess), null, 5000, false); } public void OnStop() { _stop.Set(); } private void PeriodicProcess(object state, bool timeout) { if (timeout) { // Periodic processing here } else // Stop any more events coming along _registeredWait.Unregister(null); } private ManualResetEvent _stop = new ManualResetEvent(false); private RegisteredWaitHandle _registeredWait;
//It's the method for periodically calling some methothds without using Timers. I think it is more elegant solution for this.
//Waiting process works in separate thread pool. Calling method works in main thread. Be carefull with that.
C# How to change UI control from other thread (WinForms and WPF)
WinForms:
public delegate void updateTextBoxDelegate(String textBoxString); public updateTextBoxDelegate updateTextBox; void updateTextBox1(string str ) { textBox1.Text = str1; } void display( string strItem ) { Form1.Invoke( Form1.updateTextBox, strItem ); }
WPF:
tempWindow.Dispatcher.BeginInvoke(new Action(delegate() { tempWindow.ChangeControlMethod(); }));
Subscribe to:
Comments (Atom)