Currenly使用以下代码等待完成任务的集合.但是,我现在有一种情况,我希望能够通过取消令牌取消/中止WhenAll调用.我该怎么办呢?
Dim TaskCollection As New List(Of Tasks.Task)
For x As Integer = 1 To Threads
Dim NewTask As Tasks.Task = TaskHandler.Delegates(DelegateKey).Invoke(Me, Proxies, TotalParams).ContinueWith(Sub() ThreadFinished())
TaskCollection.Add(NewTask)
Next
Await Tasks.Task.WhenAll(TaskCollection)
Run Code Online (Sandbox Code Playgroud)
我假设它会接下来的代码,但是我不确定'XXX'中会出现什么.
Await Tasks.Task.WhenAny(Tasks.Task.WhenAll(TaskCollection), XXX)
Run Code Online (Sandbox Code Playgroud) 我可以HttpClient直接设置我的对象的超时,HttpClient.Timeout但我最近读到了关于WebRequestHandler该类的衍生物HttpClientHandler.
WebRequestHandler有ReadWriteTimeout房产.当与旁边一起使用时,这将如何影响请求的操作HttpClient.Timeout?
我有这个代码处理的Web请求;
Response = await Client.SendAsync(Message, HttpCompletionOption.ResponseHeadersRead, CToken);
Run Code Online (Sandbox Code Playgroud)
在读取响应头之后和内容完成读取之前返回.当我打电话给这一行来获取内容时......
return await Response.Content.ReadAsStringAsync();
Run Code Online (Sandbox Code Playgroud)
我希望能在X秒后停止它.但它不接受取消令牌.
我不是要查找特定玩家库存的详细信息,而是查找CSGO所有项目的列表.我想要的是特别是武器的细节,但包括皮肤名称信息和稀有性.
为了更容易解释这个网站有我需要的信息,除了稀有.
http://csgo.steamanalyst.com/list.php
通过使用以下api url,我可以获得武器模型名称,但不能获得皮肤名称(即"Zirka") http://api.steampowered.com/IEconItems_730/GetSchema/v0002/?key= {YOUR_API_KEY}
我有一个Threading.Tasks.Task,它处理许多客户端套接字操作(连接,接收和发送).
我知道在可能的情况下最好使用Await使用非阻塞方法,否则我最终会得到"驻留线程等待他们的响应".但是,虽然Socket类具有异步方法(SendAsync等),但它们与通常的任务并行库异步方法不同,它们不会返回任务并且无法等待.
我意识到我可以使用TaskCompletionSource包装这些套接字异步方法,但是这样做有什么好处还是最终仍然会停止线程?
我有一个异步函数(不返回实际值,仅返回Task对象),我需要在类构造函数中以及Threading.Timers.Timer触发时运行。
我无法将构造函数子标记为异步,并且当我使用AddressOf设置计时器回调时,它警告我“将从该异步函数返回的任务将被删除,并且其中的任何异常都将被忽略。请考虑将其更改为异步子,以便将其更改为异步子”。传播异常。”。我听说使用异步subs / voids不是一个好主意,应尽可能避免使用。
构造代码
Public Sub New(File As String)
Me.New()
Await ImportXml(File)
End Sub
Run Code Online (Sandbox Code Playgroud)
计时器代码
Private WithEvents SaveTimer As New Threading.Timer(AddressOf Save, Nothing, 30 * 1000, Threading.Timeout.Infinite)
Run Code Online (Sandbox Code Playgroud)
我认为使用构造函数可以将文件的加载分为单独的子项(除非有更好的方法),但不确定如何处理计时器。我想知道我做错了什么吗,有什么办法可以安排任务,某种Task Timer?