Resource Cleanup and Lambda Expressions

A neat way of always cleaning up resources is to use Lambdas as data.

Take the following

Source

[code:c#]

    internal interface ITryCatchReport
    {
        void Try(Action<IServer> action);
    }

    internal class TryCatchReport : ITryCatchReport
    {
        public TryCatchReport(IServer server)
        {
            _server = server;
        }

        public void Try(Action<IServer> action)
        {
            try
            {
                action(_server);
            }
            catch (Exception e)
            {
                Trace.WriteLine(e.Message);
                // Clean up resources
                // Report errors
            }
        }

        private IServer _server;    
    }

 

[/code]

 

Usage

[code:c#]

TryCatchReport safeInvoker = new TryCatchReport(_data.Server);
safeInvoker.Try(x =>
{
x.MakeInterfaceCall();
});

[/code]

We are now guaranteed that in the case of an exception that the resources will get cleaned up.

 

Usage with code blocks

If you wish to execute many statements in the action look at this sample.

[code:c#]

private List<WFActionDefinition> GetActionDefinitions()
{
    if (_actionDefinitions == null)
    {
        safeInvoker.Try(x =>
            {
                x.Do1();
                x.DoSomething();
                OtherFunc();
            });
    }

    return _actionDefinitions;
}

[/code]

Visual Studio Project Dependencies

Adding project dependencies on Visual studio is done automatically with .NET projects when Add Reference dialog chooses another project from your solution.

However you can get Visual Studio to add project dependencies if no explicit intra project reference exists.

Right click on your solution, choose properties and choose the project dependencies option.

Screenshot

Windows Workflow 4.0

Ok, forget what you learned about workflow in 3.5.

Windows Workflow 4.0

4.0 changes everything you thought you knew about workflow.

WF 4.0 represents a bottom-up rewrite with entirely new thinking. The gains are enormous: custom activities take centre stage, and authoring them is much simpler; workflows are entirely declarative; and there are three workflow flow styles that you can combine seamlessly. It's possible that you could see a 10-fold improvement in the time required to create and debug workflows, in addition to 10- to 100-fold runtime performance improvements. You'd also have better control over persistence. Additionally, there's support for partial trust, a completely rewritten designer, and a better debugging experience. One of the most important improvements is in the re-hosting experience. This allows you to create activities and to allow power users -- and others -- to build or modify workflows with the constrained set of activities you've created. Yes, this is possible in WF 3.0/3.5, but the necessary code is challenging, not to mention exceedingly difficult to debug.

The improvements to WF 4.0 come at a cost. Microsoft developed two inter-op strategies to help you over this hurdle. WF 3.0/3.5 will remain part of the framework and will run side by side with WF 4.0. This lets you manage the transition at a time that fits your organization's broader goals. The other inter-op strategy is an inter-op activity that allows you to use WF 3.0/3.5 activities in a WF 4.0 workflow. Workflows are a specialization of activities, so you'll probably be able to run entire 3.0/3.5 workflows inside WF 4.0 workflows.

 

Screenshot VS2010 B2

 

Testing Silverlight

My first (public silverlight application)..

Had quite a bit of fun getting this Silverlight 3.0 application hosted in Blog Engine .. More to come.. time for some sleep now.. 02:20am...

 

ERROR - UNABLE TO LOAD CONTROL : ~/User controls/SilverlightControl.ascx

Another www.briankeating.net

Hello and welcome.
So I've started blogging... lets see how long this lasts

Why the change?

About 5 months ago I started writing my own Blog engine,

This was a great idea when the only thing (.NET wise) that I wanted to improve upon was my ASP.NET related coding.

My UX background started out with MFC, WTL and then rapidly progressed onto windows forms when I first got my hands on a beta version of .NET 1.0.; however my progress with ASP has been slower than expected as I've never worked for an ASP house, yes I come up with some useful apps that I run on intranets but they are nearly all a labour of love..

As I'm also interested in WPF/Silverlight/WCF/.NET 4.0, basically anything MS related... I find there are not enough hours in the day ..

So what I really needed was a blog engine where I could blog my findings with these new technologies along with other findings .NET related.

Think that's a longwinded way of saying I got lazy and downloaded a ready made solution.  BlogEngine.NET.

Don't expect me to offer full blown solutions and projects with each blog item.. Remember "there are not enough hours in the day..."