C# task.Start()是否在后台运行
我有大量记录可以通过移动设备向其他移动设备发送推送通知 为此,我将C# task.Start()是否在后台运行,c#,task,C#,Task,我有大量记录可以通过移动设备向其他移动设备发送推送通知 为此,我将用于task.Start()中的循环。我想知道task.Start()是否在后台运行?因此,在向移动设备发送远程通知的同时,我还可以做一些其他事情&它不会阻塞移动用户界面 下面的代码我正在使用 var pushTask = new Task(() => { if (myPushDataFilterd.Any()) { var title = txtHomeworkTitle.Value.Tri
用于task.Start()中的循环。我想知道task.Start()
是否在后台运行?因此,在向移动设备发送远程通知的同时,我还可以做一些其他事情&它不会阻塞移动用户界面
下面的代码我正在使用
var pushTask = new Task(() =>
{
if (myPushDataFilterd.Any())
{
var title = txtHomeworkTitle.Value.Trim();
for (int index = 0; index < myPushDataFilterd.Count; index++)
{
var row = myPushDataFilterd[index];
jData.Add("moduleName", "Homework");
jData.Add("organizationId", ddlOrganization.SelectedValue);
jData.Add("studentId", studentId);
jGcmData.Add("to", to);
jGcmData.Add("data", jData);
api = row.ServerKeyPush;
var url = new Uri("https://fcm.googleapis.com/fcm/send");
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.TryAddWithoutValidation("Authorization", "key=" + api);
var r = client.PostAsync(url, new StringContent(jGcmData.ToString(), Encoding.Default, "application/json")).Result;
}
}
}
});
pushTask.Start();
var pushTask=新任务(()=>
{
if(myPushDataFilterd.Any())
{
var title=txtHomeworkTitle.Value.Trim();
for(int index=0;index
实际上,这就是我现在在移动应用程序中使用的web应用程序部分。在移动应用程序中,我是否还有其他更好的选项来发送通知?Task
通常表示异步操作,因此任务块中的代码不会阻塞,除非您希望通过显式等待读取其值,请检查以下内容,例如:
Task myTask = new Task( () => Console.WriteLine("It is me myTask ^_^ "));
myTask.Start();
Console.WriteLine("Currently not waiting the output from myTask");
myTask.Wait();//Now I am waiting
//Output:
//Currently not waiting the output from myTask
//It is me myTask ^_^
您还可以使用task.Run
和TaskFactory.StartNew
在一条语句中创建和启动任务。
有关它们之间用法差异的更多信息,请检查。任务通常表示异步操作,因此任务块中的代码不会阻塞,除非您希望通过显式等待读取其值,请检查以下内容,例如:
Task myTask = new Task( () => Console.WriteLine("It is me myTask ^_^ "));
myTask.Start();
Console.WriteLine("Currently not waiting the output from myTask");
myTask.Wait();//Now I am waiting
//Output:
//Currently not waiting the output from myTask
//It is me myTask ^_^
您还可以使用task.Run
和TaskFactory.StartNew
在一条语句中创建和启动任务。
有关它们之间使用差异的更多信息,请查看。创建任务毫无意义。您正在执行IO操作,因此可以利用已经提供的异步api
private async Task PostData()
{
if (myPushDataFilterd.Any())
{
var title = txtHomeworkTitle.Value.Trim();
using (var client = new HttpClient())
{
for (int index = 0; index < myPushDataFilterd.Count; index++)
{
var row = myPushDataFilterd[index];
jData.Add("moduleName", "Homework");
jData.Add("organizationId", ddlOrganization.SelectedValue);
jData.Add("studentId", studentId);
jGcmData.Add("to", to);
jGcmData.Add("data", jData);
api = row.ServerKeyPush;
var url = new Uri("https://fcm.googleapis.com/fcm/send");
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.TryAddWithoutValidation("Authorization", "key=" + api);
var r = await client.PostAsync(url, new StringContent(jGcmData.ToString(), Encoding.Default, "application/json"));
}
}
}
}
private async Task PostData()
{
if(myPushDataFilterd.Any())
{
var title=txtHomeworkTitle.Value.Trim();
使用(var client=new HttpClient())
{
for(int index=0;index
创建任务毫无意义。您正在执行IO操作,因此可以利用已经提供的异步api
private async Task PostData()
{
if (myPushDataFilterd.Any())
{
var title = txtHomeworkTitle.Value.Trim();
using (var client = new HttpClient())
{
for (int index = 0; index < myPushDataFilterd.Count; index++)
{
var row = myPushDataFilterd[index];
jData.Add("moduleName", "Homework");
jData.Add("organizationId", ddlOrganization.SelectedValue);
jData.Add("studentId", studentId);
jGcmData.Add("to", to);
jGcmData.Add("data", jData);
api = row.ServerKeyPush;
var url = new Uri("https://fcm.googleapis.com/fcm/send");
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.TryAddWithoutValidation("Authorization", "key=" + api);
var r = await client.PostAsync(url, new StringContent(jGcmData.ToString(), Encoding.Default, "application/json"));
}
}
}
}
private async Task PostData()
{
if(myPushDataFilterd.Any())
{
var title=txtHomeworkTitle.Value.Trim();
使用(var client=new HttpClient())
{
for(int index=0;index
您应该使用任务。运行而不是新任务()
。它将在线程池的不同线程上运行。哦,这不是一个好方法吗?请参见创建任务,但运行client.PostAsync
而不等待它(.Result
是同步的)。所有这些都可以在根本不创建任务的情况下编写。您应该标记您的方法async Task
并等待client.PostAsync
。您应该使用Task.Run
而不是new Task()
。它将在线程池的不同线程上运行。哦,这不是一个好方法吗?请参见创建任务,但运行client.PostAsync
而不等待它(.Result
是同步的)。所有这些都可以在根本不创建任务的情况下编写。您应该标记您的方法异步任务
并等待客户端.PostAsync
。