1

有没有异步使用 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);

我无法在开发中真正重现。

关于如何更好地解决这个问题的任何想法?谢谢

4

1 回答 1

0

尝试在线程池线程上运行您的代码:

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

它是短暂的,因此您可以使用 CLR 线程池中的线程。

于 2013-10-10T15:59:25.740 回答