Coming back to the blogging after long months of idling ( From blogging though :) ).
Ok guys, things would be going on in a different direction from this point on wards and I would be concentrating on more focused areas rather than blogging everything I learn freshly. So folks , the focused areas are HPC ( High Performance Computing ) on .Net and Secure Software Development ( Well, Security would be my future as I see it now :D )
The HPC mainly categorized into 2 areas such as Async programming and Parallel Programming. Async Programming mainly concerns about application responsiveness and improve user experience. Technically, fork high latency , blocking operations in to different app thread.
The Parallel programming mainly focusing on performance by reducing the time of CPU-bound computations.
One way of achieving this Parallelism is using Tasks in the .Net realm. A Task is considered as a unit of work or an object denoting an ongoing operation or computation.
Following is the basic steps to create a Task object and delegate the computationally time consuming process into a different application thread.
This code would delegate the complex process execution to a different thread than the Application UI thread. But there is a problem. Accessing the lblResult from a non UI thread is illegal and throwing an exception. To counter this we need to create a ContinueWith block using the T object and let the UI content update after the complex operation thread.
Ok guys, things would be going on in a different direction from this point on wards and I would be concentrating on more focused areas rather than blogging everything I learn freshly. So folks , the focused areas are HPC ( High Performance Computing ) on .Net and Secure Software Development ( Well, Security would be my future as I see it now :D )
The HPC mainly categorized into 2 areas such as Async programming and Parallel Programming. Async Programming mainly concerns about application responsiveness and improve user experience. Technically, fork high latency , blocking operations in to different app thread.
The Parallel programming mainly focusing on performance by reducing the time of CPU-bound computations.
One way of achieving this Parallelism is using Tasks in the .Net realm. A Task is considered as a unit of work or an object denoting an ongoing operation or computation.
Following is the basic steps to create a Task object and delegate the computationally time consuming process into a different application thread.
using System.Threading.Tasks;
Task T = Task.Factory.StartNew(() =>
{
Random rand = new Random();
int start = System.Environment.TickCount;
double result= Simulation.ComputeComplex(rand);
int stop = System.Environment.TickCount;
double elapsedTimeInSecs = (stop - start) / 1000.0;
this.lblResult.Content = result.ToString();
this.lblTimeTaken.Content = elapsedTimeInSecs.ToString();
}
);
This code would delegate the complex process execution to a different thread than the Application UI thread. But there is a problem. Accessing the lblResult from a non UI thread is illegal and throwing an exception. To counter this we need to create a ContinueWith block using the T object and let the UI content update after the complex operation thread.
using System.Threading.Tasks;
Task T = Task.Factory.StartNew(() =>
{
Random rand = new Random();
int start = System.Environment.TickCount;
result= Simulation.ComputeComplex(rand);
int stop = System.Environment.TickCount;
elapsedTimeInSecs = (stop - start) / 1000.0;
this.lblResult.Content = result.ToString();
this.lblTimeTaken.Content = elapsedTimeInSecs.ToString();
}
);
T.ContinueWith((antecedent) =>
{
this.lblResult.Content = result.ToString();
this.lblTimeTaken.Content = elapsedTimeInSecs.ToString();
TaskScheduler.FromCurrentSynchronizationContext()
);
No comments:
Post a Comment