0

それぞれが異なるサイトから製品をインポートするいくつかの異なる方法があります。これらを順番に実行すると、プロセス全体に多くの時間がかかります。特に、応答の遅いサイトで 1 つのメソッドが実行されている場合はそうです。

私はむしろそれらを同時に実行したいと思います。

これは私がこれまでに1つのサンプルメソッドで持っているものです:

Public Class feedParameters

Private _productIdPrefix As String
Private _publishersite As String
Private _feedURL As String

Public Property productIdPrefix() As String
    Get
        Return _productIdPrefix
    End Get
    Set(value As String)
        _productIdPrefix = value
    End Set
End Property
Public Property publishersite() As String
    Get
        Return _publishersite
    End Get
    Set(value As String)
        _publishersite = value
    End Set
End Property
Public Property feedURL() As String
    Get
        Return _feedURL
    End Get
    Set(value As String)
        _feedURL = value
    End Set
End Property


End Class




Dim fpm As New feedParameters
fpm.publishersite = "mypublisher.nl"
fpm.feedURL = "http://www.domain.com/test.xml"
fpm.productIdPrefix = "10"

Protected Sub ImportProductsPublisherA(ByVal productIdPrefix As String, ByVal publishersite As String, ByVal feedURL As String)

End Sub

私はこれを試しました:

System.Threading.ThreadPool.QueueUserWorkItem(New System.Threading.WaitCallback(AddressOf ImportProductsPublisherA()), fpm)

次に、3 つのパラメーター (productIdPrefix、publishersite、および feedURL) に引数を指定していないという 3 つのエラーが表示されます。

私も試しました:

System.Threading.ThreadPool.QueueUserWorkItem(New System.Threading.WaitCallback(AddressOf ImportProductsPublisherA), fpm)

次のエラーが表示されます: メソッド 'Protected Sub ImportProductsPublisherA(productIdPrefix As String, publishersite As String, feedURL As String)' には、デリゲート 'Delegate Sub WaitCallback(state As Object)' と互換性のある署名がありません。

どんな助けでも大歓迎です!

4

2 に答える 2

2
using System.Threading.Tasks;

namespace Foo
{
   public class Bar
   {
      public void ImportProductsSiteA() { }
      public void ImportProductsSiteB() { }
      public void ImportProductsSiteC() { }
      public void ImportProductsSiteD() { }

      public void Execute()
      {
         var a = Task.Factory.StartNew(ImportProductsSiteA);
         var b = Task.Factory.StartNew(ImportProductsSiteB);
         var c = Task.Factory.StartNew(ImportProductsSiteC);
         var d = Task.Factory.StartNew(ImportProductsSiteD);
         Task.WaitAll(a, b, c, d);
      }
   }
}
于 2013-05-02T13:28:47.277 に答える