C# 在页面加载中调用异步方法 静态异步void SendTweetWithSinglePicture(字符串消息、字符串图像) { var auth=新的SingleUserAuthorizer { CredentialStore=新的SingleUserInMemoryCredentialStore { 消费品「, 消费者信用=”, AccessToken=“”, AccessTokenSecret=“” } }; var context=新TwitterContext(auth); var uploadedMedia=await context.UploadMediaAsync(File.ReadAllBytes(@image)); var mediaIds=新列表{uploademdedia.MediaID}; wait context.tweetsync( 消息 中胚层 ); } 受保护的无效页面加载(对象发送方、事件参数e) { 发送带有SinglePicture(“测试”、“路径”)的tweet; }
如何调用加载页面上的C# 在页面加载中调用异步方法 静态异步void SendTweetWithSinglePicture(字符串消息、字符串图像) { var auth=新的SingleUserAuthorizer { CredentialStore=新的SingleUserInMemoryCredentialStore { 消费品「, 消费者信用=”, AccessToken=“”, AccessTokenSecret=“” } }; var context=新TwitterContext(auth); var uploadedMedia=await context.UploadMediaAsync(File.ReadAllBytes(@image)); var mediaIds=新列表{uploademdedia.MediaID}; wait context.tweetsync( 消息 中胚层 ); } 受保护的无效页面加载(对象发送方、事件参数e) { 发送带有SinglePicture(“测试”、“路径”)的tweet; },c#,asp.net,.net,async-await,C#,Asp.net,.net,Async Await,如何调用加载页面上的异步方法。它在MSDN页面中有示例 static async void SendTweetWithSinglePicture(string message, string image) { var auth = new SingleUserAuthorizer { CredentialStore = new SingleUserInMemoryCredentialStore { ConsumerKey =
异步方法。它在MSDN页面中有示例
static async void SendTweetWithSinglePicture(string message, string image)
{
var auth = new SingleUserAuthorizer
{
CredentialStore = new SingleUserInMemoryCredentialStore
{
ConsumerKey = "",
ConsumerSecret = "",
AccessToken = "",
AccessTokenSecret = ""
}
};
var context = new TwitterContext(auth);
var uploadedMedia = await context.UploadMediaAsync(File.ReadAllBytes(@image));
var mediaIds = new List<ulong> { uploadedMedia.MediaID };
await context.TweetAsync(
message,
mediaIds
);
}
protected void Page_Load(object sender, EventArgs e)
{
SendTweetWithSinglePicture("test", "path");
}
正如我指出的,MSDN页面上的示例和解释非常好。您应该使用。它在MSDN页面中有示例
static async void SendTweetWithSinglePicture(string message, string image)
{
var auth = new SingleUserAuthorizer
{
CredentialStore = new SingleUserInMemoryCredentialStore
{
ConsumerKey = "",
ConsumerSecret = "",
AccessToken = "",
AccessTokenSecret = ""
}
};
var context = new TwitterContext(auth);
var uploadedMedia = await context.UploadMediaAsync(File.ReadAllBytes(@image));
var mediaIds = new List<ulong> { uploadedMedia.MediaID };
await context.TweetAsync(
message,
mediaIds
);
}
protected void Page_Load(object sender, EventArgs e)
{
SendTweetWithSinglePicture("test", "path");
}
正如我所指出的,MSDN页面上的示例和解释非常好。问题是,是否要使页面加载
方法异步。如果是:
// Register the asynchronous task.
Page.RegisterAsyncTask(new PageAsyncTask(SendTweetWithSinglePicture(message, image));
// Execute the register asynchronous task.
Page.ExecuteRegisteredAsyncTasks();
或者如果您不希望它是异步的:
protected async void Page_Load(object sender, EventArgs e)
{
await SendTweetWithSinglePicture("test", "path");
}
这确实需要您的async
方法像往常一样返回Task
(事件处理程序除外)
这可能是因为该方法在呈现页面之前没有完成。如果必须,最好使方法同步,或者使用Page.RegisterAsyncTask
和Page.ExecuteRegisteredAsyncTasks
注册任务。这将有效地冻结页面加载
方法
protected void Page_Load(object sender, EventArgs e)
{
SendTweetWithSinglePicture("test", "path").Wait();
}
问题是您是否希望使Page\u Load
方法异步。如果是:
// Register the asynchronous task.
Page.RegisterAsyncTask(new PageAsyncTask(SendTweetWithSinglePicture(message, image));
// Execute the register asynchronous task.
Page.ExecuteRegisteredAsyncTasks();
或者如果您不希望它是异步的:
protected async void Page_Load(object sender, EventArgs e)
{
await SendTweetWithSinglePicture("test", "path");
}
这确实需要您的async
方法像往常一样返回Task
(事件处理程序除外)
这可能是因为该方法在呈现页面之前没有完成。如果必须,最好使方法同步,或者使用Page.RegisterAsyncTask
和Page.ExecuteRegisteredAsyncTasks
注册任务。这将有效地冻结页面加载
方法
protected void Page_Load(object sender, EventArgs e)
{
SendTweetWithSinglePicture("test", "path").Wait();
}
试试这个:
protected void Page_Load(object sender, EventArgs e)
{
PageAsyncTask t = new PageAsyncTask(SendTweetWithSinglePicture("test", "path"));
// Register the asynchronous task.
Page.RegisterAsyncTask(t);
// Execute the register asynchronous task.
Page.ExecuteRegisteredAsyncTasks();
}
public void页面加载(对象发送方,事件参数e)
{
RegisterAsyncTask(新页面异步任务(LoadSomeData));
}
公共异步任务LoadSomeData()
{
var clientcontacts=Client.downloadstringtasksync(“api/contacts”);
var clienttemperature=Client.downloadstringtaskancy(“api/temperature”);
var clientlocation=Client.downloadstringtaskancy(“api/location”);
等待任务。WhenAll(客户端联系人、客户端温度、客户端位置);
var contacts=Newtonsoft.Json.JsonConvert.DeserializeObject(等待clientcontacts);
var location=Newtonsoft.Json.JsonConvert.DeserializeObject(等待clientlocation);
var temperature=Newtonsoft.Json.JsonConvert.DeserializeObject(等待clienttemperature);
listcontacts.DataSource=联系人;
listcontacts.DataBind();
Text=温度;
位置。文本=位置;
}
试试这个:
protected void Page_Load(object sender, EventArgs e)
{
PageAsyncTask t = new PageAsyncTask(SendTweetWithSinglePicture("test", "path"));
// Register the asynchronous task.
Page.RegisterAsyncTask(t);
// Execute the register asynchronous task.
Page.ExecuteRegisteredAsyncTasks();
}
public void页面加载(对象发送方,事件参数e)
{
RegisterAsyncTask(新页面异步任务(LoadSomeData));
}
公共异步任务LoadSomeData()
{
var clientcontacts=Client.downloadstringtasksync(“api/contacts”);
var clienttemperature=Client.downloadstringtaskancy(“api/temperature”);
var clientlocation=Client.downloadstringtaskancy(“api/location”);
等待任务。WhenAll(客户端联系人、客户端温度、客户端位置);
var contacts=Newtonsoft.Json.JsonConvert.DeserializeObject(等待clientcontacts);
var location=Newtonsoft.Json.JsonConvert.DeserializeObject(等待clientlocation);
var temperature=Newtonsoft.Json.JsonConvert.DeserializeObject(等待clienttemperature);
listcontacts.DataSource=联系人;
listcontacts.DataBind();
Text=温度;
位置。文本=位置;
}
如果将方法更改为静态异步任务而不是void,则可以使用SendTweetWithSinglePicture(“test”,“path”).Wait()调用它。避免async void
,除非您将其用于事件。顺便说一句,尽量避免使用API密钥/机密发布您的问题。任何拥有这些信息的人都可以劫持API帐户。@RonBeyer在ASP应用程序中同步阻塞是在乞求死锁。如果可以避免的话,永远不要调用Task.Wait()。在这种情况下,可以简单地使Page_Load异步,或使用内置类型的ASP注册异步任务。如果将方法更改为静态异步任务
,而不是void,则可以使用SendTweetWithSinglePicture(“test”,“path”).Wait()调用它。避免async void
,除非您将其用于事件。顺便说一句,尽量避免使用API密钥/机密发布您的问题。任何拥有这些信息的人都可以劫持API帐户。@RonBeyer在ASP应用程序中同步阻塞是在乞求死锁。如果可以避免的话,永远不要调用Task.Wait()。在这种情况下,可以简单地使Page_Load异步,或使用内置类型的ASP注册异步任务。要使用SendTweet的方法签名,Wait
。。。需要更改为async Task
对吗?是的。说得好。所有异步方法都应该(事件处理程序除外)。要使用SendTweet的方法签名,Wait
。。。需要更改为async Task
对吗?是的。说得好。所有异步方法都应该(事件处理程序除外)。如果显示实际代码而不是完全依赖MSDN,可能会更方便。如果显示实际代码而不是完全依赖MSDN,可能会更方便。在哪里声明了RegisterAsyncTask
?请tr