Размещение рабочего процесса в консольном приложении в .NET 4 - PullRequest
0 голосов
/ 24 июля 2011

Как я могу разместить рабочий процесс в консольном приложении? Я достаточно гуглил и не нашел хорошего образца.

Ответы [ 2 ]

3 голосов
/ 24 июля 2011

Я удивлен, что вы не можете найти пример, так как большинство основных примеров выполняется с помощью консольного приложения. Например, этот.

Время выполнения рабочего процесса не зависит от типа хоста, поэтому что-то вроде этого прекрасно работает в консольном приложении или в равной степени хорошо в приложении ASP.NET или WPF.

var workflow = new Workflow1();
workflow.FirstName = "Maurice";
workflow.LastName = "de Beijer";

var result = WorkflowInvoker.Invoke(workflow);
Console.WriteLine(result["Greeting"]);
0 голосов
/ 25 июля 2011

Я сделал что-то вроде следующего, где FeedManager - консольное приложение, ProcessAllImports и ProcessAllExportFeeds - действия кода или xaml.Это просто, но работает хорошо.Надеюсь, это поможет ...

class FeedManager
{
    static void Main(string[] args)
    {
        FeedManager fm = new FeedManager();
        fm.Run(args);
    }

    private int Run(string[] args)
    {
        ProcessAllImports importProcess = new ProcessAllImports();
        List<Feed> importFeedSuccesses = new List<Feed>();
        List<Feed> importFeedsFailure =  new List<Feed>();

        ProcessAllExportFeeds exportProcess = new ProcessAllExportFeeds();
        List<Feed> exportFeedSuccesses = new List<Feed>();
        List<Feed> exportFeedsFailure = new List<Feed>();

        try
        {
            IDictionary<string, object> importFeedsArgs = new Dictionary<string, object> 
            { 
                { "FeedsSuccess", importFeedSuccesses }, 
                { "FeedsFailure", importFeedsFailure },
            };
            var importOutput = WorkflowInvoker.Invoke(importProcess, importFeedsArgs);
            bool importSuccess = (bool)importOutput["Success"];
            importFeedSuccesses = (List<Feed>)importOutput["FeedsSuccess"];
            importFeedsFailure = (List<Feed>)importOutput["FeedsFailure"];

            IDictionary<string, object> exportFeedsArgs = new Dictionary<string, object> 
            { 
                { "FeedsSuccess", exportFeedSuccesses }, 
                { "FeedsFailure", exportFeedsFailure },
            };
            var exportOutput = WorkflowInvoker.Invoke(exportProcess, exportFeedsArgs);
            bool exportSuccess = (bool)exportOutput["Success"];
            exportFeedSuccesses = (List<Feed>)exportOutput["FeedsSuccess"];
            exportFeedsFailure = (List<Feed>)exportOutput["FeedsFailure"];

        }
        catch (Exception e)
        {
            return -1;
        }
...