Aufruf der Asynchronen Methode Page_Load
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");
}
Wie kann ich es nenne, ein async
Methode auf Page_Load
?
- Wenn Sie die Methode ändern, um
static async Task
statt der leere, die Sie aufrufen können, indem Sie mitSendTweetWithSinglePicture("test", "path").Wait()
. Vermeidenasync void
es sei denn, Sie verwenden es für Veranstaltungen. - Durch die Art und Weise, versuchen zu vermeiden, veröffentlichen Sie Ihre Frage mit der API-keys/secrets. Jemand mit diesen Informationen können entführen die API-Konto.
- Sperrung synchron in einer ASP-Anwendung ist betteln für einen deadlock. Never ever call-Task.Wait (), wenn Sie überhaupt zu vermeiden. In diesem Fall ist es möglich, einfach nur Page_Load async, oder registrieren Sie einen async-task mit Hilfe des built-in-Typen von ASP.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Frage ist, ob Sie das machen wollen
Page_Load
Methode async oder nicht. Wenn ja:Oder wenn Sie nicht wollen, es zu sein
async
:Diese erfordert Ihr
async
Methode zurückTask
, wie es immer sein sollte! (außer event-Handler)Das problem dabei könnte sein, dass die Methode nicht komplett vor dem Rendern der Seite. Wenn schon, solltest du besser die Methode synchron oder registrieren den Vorgang mit
Page.RegisterAsyncTask
undPage.ExecuteRegisteredAsyncTasks
. Effektiv das einfrieren wird diePage_Load
Methode zu.Wait
die Signatur der Methode für die SendTweet... muss geändert werden, umasync Task
nicht wahr?Versuchen Sie Dies :
RegisterAsyncTask
erklärt? Bitte versuchen Sie es zu vermeiden "versuchen, diese" Art Antworten. Antworten ohne zu erklären, was sich geändert hat und warum nicht helfen, die OP, das problem zu verstehen.Sollten Sie verwenden PageAsyncTask. Es hat Beispiele in der MSDN-Seite.
als ich zeigte das Beispiel und die Erläuterungen auf der MSDN-Seite ist ziemlich gut.