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.