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