Websync 4.0 - издатель асинхронный

Есть ли способ использовать Websync Publisher асинхронно? В настоящее время я делаю это

var publisher = new Publisher(url);
var result = publisher.Publish(publication);
if (!result.Successful)
    //Log exception

Проблема с этой версией в том, что при первой публикации это занимает где-то около 2 секунд. Я видел на некоторых форумах, что в более ранних версиях Websync они предлагали возможность использования Publisher асинхронно, см. Здесь, но по некоторым причинам это не доступно в Websync 4.0

Я попытался опубликовать асинхронно, как это

var publisher = new Publisher(url);
Func<Publication> a = () => Publisher.Publish(publication);
a.BeginInvoke(result =>
{
    var m = result.AsyncState as Func<Publication>;
    if (m != null)
    {
        var asyncResult = m.EndInvoke(result);
        if (!asyncResult.Successful)
            // Log exception
    }
 }, a);

Но это привело к исключению "нулевой ссылки" на

var asyncResult = m.EndInvoke(result);

который я не мог воспроизвести в процессе разработки.

Есть идеи как лучше подойти к этому? Спасибо

1 ответ

Попробуйте запустить свой код в потоке пула потоков:

ThreadPool.QueueUserWorkItem((state) =>
{
    var publisher = new Publisher(url);
    var result = publisher.Publish(publication);
    if (!result.Successful)
        //Log exception
}, null);

Он недолговечный, поэтому вы можете использовать поток из пула потоков CLR.

Другие вопросы по тегам