相关疑难解决方法(0)

SynchronizationContext有什么作用?

在Programming C#一书中,它有一些示例代码SynchronizationContext:

SynchronizationContext originalContext = SynchronizationContext.Current;
ThreadPool.QueueUserWorkItem(delegate {
    string text = File.ReadAllText(@"c:\temp\log.txt");
    originalContext.Post(delegate {
        myTextBox.Text = text;
    }, null);
});
Run Code Online (Sandbox Code Playgroud)

我是线程的初学者,所以请详细回答.首先,我不知道上下文是什么意思,程序保存在originalContext什么?当Post方法被触发时,UI线程会做什么?
如果我问一些愚蠢的事情,请纠正我,谢谢!

编辑:例如,如果我只是写myTextBox.Text = text;在方法中,有什么区别?

.net c# multithreading

116
推荐指数
6
解决办法
4万
查看次数

c#:在完成之前经过一定时间后重新启动异步任务

所以,我一直在开发一个使用 REST API 请求的应用程序,但是,由于某种原因,该 API 随机变得无响应(有时它会在 3 秒内给出响应,有时请求会花费很长时间,以至于它会抛出 timeOutexception)所以每当我调用一个电话时,如果在一定时间内没有检索到响应,我会使用此代码重新启动调用:

bool taskCompletion = false;
        while(taskCompletion == false)
        {
            try
            {
                using (CancellationTokenSource cts = new CancellationTokenSource())
                {
                    cts.CancelAfter(timeSpan);
                    await task(cts.Token);
                    taskCompletion = true;
                }
            }
            catch (OperationCanceledException)
            {
                taskCompletion = false;
            }
        }
Run Code Online (Sandbox Code Playgroud)

我的 API 请求之一如下:

 public static async Task<Result> task(CancellationToken ct)
    {
        string Url = baseurl
        ApiHelper instance = new ApiHelper();

        using (HttpResponseMessage response = await instance.ApiClient.GetAsync(Url, ct))
        {
            if (response.IsSuccessStatusCode)
            {
                var x = await response.Content.ReadAsStringAsync();
                var result = …
Run Code Online (Sandbox Code Playgroud)

c# rest asynchronous servicenow

6
推荐指数
1
解决办法
115
查看次数

标签 统计

c# ×2

.net ×1

asynchronous ×1

multithreading ×1

rest ×1

servicenow ×1