Как я могу написать ниже строки кода в .NET 4.0:Как ниже линии могут быть заменены в .net4.0
EventHandlerTaskAsyncHelper asyncHelper = new EventHandlerTaskAsyncHelper(WriteLogMessages);--> this is in .net 4.5
Благодарности
Как я могу написать ниже строки кода в .NET 4.0:Как ниже линии могут быть заменены в .net4.0
EventHandlerTaskAsyncHelper asyncHelper = new EventHandlerTaskAsyncHelper(WriteLogMessages);--> this is in .net 4.5
Благодарности
Основная проблема такой миграции является то, что вы пытаясь вписаться в решение архитектуры, доступное только в .NET 4.5. Согласно MSDN, EventHandlerTaskAsyncHelper
единственной целью:
Обращенная задача возвращающей асинхронным методов в методы, которые используют асинхронную модель программирования, используемую в предыдущих версиях ASP.NET и который основан на время начала и окончание событиях.
И Замечания Раздел:
Для обработки асинхронных задач в ASP.NET 4.5, вы реализуете логику для возврата задачи в качестве делегата TaskEventHandler. Эта модель асинхронного программирования на основе задач заменяет модель, используемую в предыдущих версиях ASP.NET, которая основывает всю обработку событий на начальных и конечных событиях. ...
Так что этот класс используется для оберточной другого кода, чтобы вписаться в новую версию сайта ASSP.NET MVC. Таким образом, вы должны пересмотреть всю диаграмму классов и архитектуру вашего приложения в соответствии с правилами версии MVC, которые вы будете использовать в своем проекте.
Может быть эта нить будет хорошим стартом:
ASP.NET MVC - IHttpModule, Asynchronous Event Handler, EventHandlerTaskAsyncHelper
Три вопроса с этим ответом. Задачи были введены в .NET 4.0 и статьи о том, как конвертировать стиль APM в/из Задачи был опубликован с самого начала. Библиотека параллельных расширений содержит расширения и помощники для многих общих классов, таких как Smtp, WebRequest и т. Д. И, вероятно, является источником EventHandlerTaskAsyncHelper. Во-вторых, ASP.NET никогда не упоминался. В-третьих, ссылка показывает только пример использования EventHandlerTaskAsyncHelper –
@PanagiotisKanavos 1. EventHandlerTaskAsyncHelper используется в ASP.NET 4.5, его пространство имен является System.Web, поскольку я связан, и он не является частью параллельных расширений , 2. Я не понимаю, почему вы говорите о Задачах, поскольку они вообще не упоминаются. 3. Ссылка о внедрении «IHTTPModule», который может представлять интерес для OP, поскольку я не знаю, что именно он хочет сделать. – VMAtm
К сожалению, не проверялось пространство имен, но функциональность не специфична для ASP.NET. Это универсальная реализация вызова методов Begin/End из Tasks, аналогичная [образцам MSDN для .NET 4.0] (http://msdn.microsoft.com/en-us/library/dd997423%28v=vs.110%29 .aspx # sectionToggle7). Если бы я был OP, я был бы больше обеспокоен отсутствием 4,5 веб-функций, а не вспомогательной реализацией –
EventHandlerTaskAsyncHelper просто помощник, который обеспечивает APM-стиль (BeginOperation/EndOperation) интерфейса через Task. Задача делает реализует IAsyncResult, поэтому вы можете вернуть его непосредственно из метода BeginOperation
. Метод EndOperation
должен только вернуть аргумент IAsyncResult
к задаче и ждать ее. Это показано в статье MSDN TPL and Traditional .NET Framework Asynchronous Programming:
public IAsyncResult BeginCalculate(int decimalPlaces, AsyncCallback ac, object state)
{
Task<string> f = Task<string>.Factory.StartNew(_ => Compute(decimalPlaces), state);
if (ac != null) f.ContinueWith((res) => ac(f));
return f;
}
public string Compute(int numPlaces)
{
...
}
public string EndCalculate(IAsyncResult ar)
{
return ((Task<string>)ar).Result;
}
EventHandlerTaskAsyncHelper класс
просто
делает его легче писать такой код, с некоторыми проверками на уже выполненные задачи и т.д. Концепция не является чем-то специфичным для .NET 4,5.
Это самое лучшее решение для обновления остальной части вашего кода до .NET 4.5, а не для резервного копирования приложения на .NET 4.0. В то время как вы можете получить некоторые из функций 4.5 с пакетом Microsoft.Bcl.Async, значительных частей будет отсутствовать. Новые библиотеки, такие как TPL Dataflow, Immutable Collections и т. Д., Просто требуют использования .NET 4.5.
Если вы не нацелились на Windows XP, нет смысла оставаться в .NET 4.0, особенно когда приложение уже написано в 4.5.
Возможно установить .NET 4.5? – leppie
Если это единственная строка кода, которая вызывает у вас проблемы, возможно, вам стоит рассмотреть возможность захвата реализации из [Reference Source] (http://referencesource.microsoft.ком/# System.Web/EventHandlerTaskAsyncHelper.cs, 0009fd6522687b6c). Тем не менее, я бы заподозрил, что на самом деле это всего лишь верхушка айсберга, пытающегося вернуть обратно код .NET 4.5 в 4.0. –
Спасибо за ответ. Я создаю приложение в .net 4.0, которое было использовано в .net 4.5 .. @leppie – user3318540