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);

しかし、これにより「null参照」例外が発生しました

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 に答える