【发布时间】:2020-01-03 13:45:33
【问题描述】:
抱歉问题的标题,我不确定应该是什么。
我有这个方法:
public async Task Instagram(string username, int timeout = 10)
{
int question = QuestionUtils.GenerateQuestion();
await DiscordUtils.QuestionAsync(_interactive, _context, question, embed, timeout);
if (await QuestionUtils.QuestionResponse(question))
Console.WriteLine("yes");
else
Console.WriteLine("no");
}
这就是DiscordUtils.QuestionAsync 的样子:
public static async Task QuestionAsync(InteractiveService interactive, SocketCommandContext context, int question, EmbedBuilder embed, int timeout)
{
await interactive.SendMessageWithReactionCallbacksAsync(
context, new ReactionCallbackData(null, embed.Build(), false, false, TimeSpan.FromMinutes(timeout))
.WithCallback(new Emoji("✅"), (_context, _reaction) => QuestionUtils.SetResponse(question, true))
.WithCallback(new Emoji("❌"), (_context, _reaction) => QuestionUtils.SetResponse(question, false))
);
}
这就是QuestionUtils.QuestionResponse 的样子:
public static bool QuestionResponse(int question)
{
while (questions[question] == Response.None)
Thread.Sleep(100);
return questions[question] == Response.Yes;
}
基本上,我的回调只会在QuestionUtils.QuestionResponse 完成(循环)时被调用。
但是,我希望在 QuestionUtils.QuestionResponse 循环时调用它们,因此通过“绕过”等待的东西。
所以我不希望DiscordUtils.QuestionAsync 等待QuestionUtils.QuestionResponse 执行QuestionUtils.SetResponse 回调。
我该怎么做?
【问题讨论】:
-
问题发布 10 秒后给出的 -1 有什么原因吗?
-
不好笑,没笑。
-
我真的不明白你为什么要在
while循环中检查这个。 -
你的问题对我来说没有任何意义
标签: c# async-await