Asp.net 如何同时调用多个不同的方法

Asp.net 如何同时调用多个不同的方法,asp.net,vb.net,multithreading,Asp.net,Vb.net,Multithreading,我有一些不同的方法,每个进口产品从不同的网站。 如果我按顺序执行这些,整个过程会花费很多时间,特别是当一个方法在响应性较差的站点上运行时 我宁愿同时运行它们 到目前为止,我使用了1个示例方法: Public Class feedParameters Private _productIdPrefix As String Private _publishersite As String Private _feedURL As String Public Property productIdPre

我有一些不同的方法,每个进口产品从不同的网站。 如果我按顺序执行这些,整个过程会花费很多时间,特别是当一个方法在响应性较差的站点上运行时

我宁愿同时运行它们

到目前为止,我使用了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个错误,我没有为这3个参数指定参数:productIdPrefix、publishersite和feedURL

我还尝试:

System.Threading.ThreadPool.QueueUserWorkItem(New System.Threading.WaitCallback(AddressOf ImportProductsPublisherA), fpm)
我得到这个错误: 方法“受保护的Sub-ImportProductsPublisherA(productIdPrefix为字符串,publishersite为字符串,feedURL为字符串)”没有与委托“委托Sub-WaitCallback(状态为对象)”兼容的签名


非常感谢您的帮助

这是WinForms还是asp.net

如果winforms为每个函数创建一个后台工作程序并启动所有函数,它们将在单独的线程中独立工作

如果asp.net希望使用
System.Threading.ThreadPool
-

如果函数采用任何参数,则可以按如下方式传递它们:

System.Threading.ThreadPool.QueueUserWorkItem(New System.Threading.WaitCallback(AddressOf ImportProductsSiteA), parameter-here)

这是WinForms还是asp.net

如果winforms为每个函数创建一个后台工作程序并启动所有函数,它们将在单独的线程中独立工作

如果asp.net希望使用
System.Threading.ThreadPool
-

如果函数采用任何参数,则可以按如下方式传递它们:

System.Threading.ThreadPool.QueueUserWorkItem(New System.Threading.WaitCallback(AddressOf ImportProductsSiteA), parameter-here)
使用System.Threading.Tasks;
名称空间Foo
{
公共类酒吧
{
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);
}
}
}
使用System.Threading.Tasks;
名称空间Foo
{
公共类酒吧
{
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);
}
}
}

是asp.net。我查看了您提供的链接,但是我如何使用该技术调用我的4个方法呢?我还不明白逻辑:)谢谢!谢谢,这在向函数传递1个参数时有效,但是如果我想传递更多参数呢?在我的例子中,2个字符串和1个整数?您需要更改函数以接受新对象作为参数-目前它仍然需要2个字符串和一个整数,而不是新的
feedParemeters
类。您的一个或多个函数失败,尝试在开发环境中测试它们,而不异步运行它们,以查看是否存在任何错误。另外,请阅读线程安全,如果您的函数进行任何跨线程调用,它们都将失败。您不能按线程的性质返回值,但还有几个其他选项,如类中的字段、事件和委托。这里的一些例子是用c语言编写的,但只是使用了一个转换器。它是asp.net。我查看了您提供的链接,但是我如何使用该技术调用我的4个方法呢?我还不明白逻辑:)谢谢!谢谢,这在向函数传递1个参数时有效,但是如果我想传递更多参数呢?在我的例子中,2个字符串和1个整数?您需要更改函数以接受新对象作为参数-目前它仍然需要2个字符串和一个整数,而不是新的
feedParemeters
类。您的一个或多个函数失败,尝试在开发环境中测试它们,而不异步运行它们,以查看是否存在任何错误。另外,请阅读线程安全,如果您的函数进行任何跨线程调用,它们都将失败。您不能按线程的性质返回值,但还有几个其他选项,如类中的字段、事件和委托。这里的一些例子是用c语言编写的,但只是使用了一个转换器。我现在有:Dim a As System.Threading.Tasks.Task=Task.Factory.StartNew(ImportProductsSiteA),但随后我得到错误:重载解析失败,因为无法使用以下参数调用可访问的“StartNew”:“公共函数StartNew(属于TResult)(函数As System.Func(属于TResult))As System.Threading.Tasks.Task(属于TResult)”:数据类型无法从这些参数推断类型参数的。显式指定数据类型可能会更正此错误。'Public Function StartNew(action As System.action)As System.Threading.Tasks.Task':表达式不生成值。是的,抱歉,这是C版本。我不确定VB的语法是什么。我现在有:Dim a As System.Threading.Tasks.Task=Task.Factory.StartNew(ImportProductsSiteA),但随后我得到了错误:重载解析失败,因为无法使用以下参数调用可访问的“StartNew”:“Public Function StartNew(Of TResult)(Function As System.Func(Of TResult))As System.Threading.Tasks.Task(属于TResult)':无法从这些参数推断类型参数的数据类型。显式指定数据类型可能会更正此错误。'Public Function StartNew(action As System.action)As System.Threading.Tasks.Task':表达式不生成值。是的,很抱歉,这是C版本。我不确定VB的语法是什么。