请问关于c的具体应用场景有哪些?
- 内容介绍
- 文章标签
- 相关推荐
本文共计397个文字,预计阅读时间需要2分钟。
我将两条消息简化如下:
1. 使用两条消息回复用户,作为回复。
2.示例代码:
csharp static Timer t=new Timer(new TimerCallback(TimerEvent)); static Timer t1=new Timer(new TimerCallback(TimerEventInActivity)); static int timeOut=Convert.ToInt32(ConfigurationManage); 我将两条消息发回用户作为回复,如下所示,static Timer t = new Timer(new TimerCallback(TimerEvent)); static Timer t1 = new Timer(new TimerCallback(TimerEventInActivity)); static int timeOut = Convert.ToInt32(ConfigurationManager.AppSettings["disableEndConversationTimer"]); //3600000 public static void CallTimer(int due) { t.Change(due, Timeout.Infinite); } public static void CallTimerInActivity(int due) { t1.Change(due, Timeout.Infinite); } public async static Task PostAsyncWithDelay(this IDialogContext ob, string text) { try { var message = ob.MakeMessage(); message.Type = Microsoft.Bot.Connector.ActivityTypes.Message; message.Text = text; await PostAsyncWithDelay(ob, message); CallTimer(300000); if ("true".Equals(ConfigurationManager.AppSettings["disableEndConversation"])) { CallTimerInActivity(timeOut); } } catch (Exception ex) { Trace.TraceInformation(ex.Message); } } await context.PostAsyncWithDelay("Great!"); await context.PostAsyncWithDelay("I can help you with that.");
但是,收到它们之间没有延迟.这两条消息都是一次性收到的.
如何延迟第二条消息一段时间?
在根对话框中要延迟消息,可以使用Task.Delay方法.将PostAsyncWithDelay更改为:
public async static Task PostAsyncWithDelay(IDialogContext context, string text) { await Task.Delay(4000).ContinueWith(t => { var message = context.MakeMessage(); message.Text = text; using (var scope = DialogModule.BeginLifetimeScope(Conversation.Container, message)) { var client = scope.Resolve<IConnectorClient>(); client.Conversations.ReplyToActivityAsync((Activity)message); } }); }
如果要延迟消息,可以调用PostAsyncWithDelay方法,否则使用context.PostAsync方法发送消息.
private async Task MessageReceivedAsync(IDialogContext context, IAwaitable<object> result) { //Sending a message nomally await context.PostAsync("Hi"); //Notify the user that the bot is typing var typing = context.MakeMessage(); typing.Type = ActivityTypes.Typing; await context.PostAsync(typing); //The message you want to delay. //NOTE: Do not use context.PostAsyncWithDelay instead simply call the method. await PostAsyncWithDelay(context, "2nd Hi"); }
OUTPUT
本文共计397个文字,预计阅读时间需要2分钟。
我将两条消息简化如下:
1. 使用两条消息回复用户,作为回复。
2.示例代码:
csharp static Timer t=new Timer(new TimerCallback(TimerEvent)); static Timer t1=new Timer(new TimerCallback(TimerEventInActivity)); static int timeOut=Convert.ToInt32(ConfigurationManage); 我将两条消息发回用户作为回复,如下所示,static Timer t = new Timer(new TimerCallback(TimerEvent)); static Timer t1 = new Timer(new TimerCallback(TimerEventInActivity)); static int timeOut = Convert.ToInt32(ConfigurationManager.AppSettings["disableEndConversationTimer"]); //3600000 public static void CallTimer(int due) { t.Change(due, Timeout.Infinite); } public static void CallTimerInActivity(int due) { t1.Change(due, Timeout.Infinite); } public async static Task PostAsyncWithDelay(this IDialogContext ob, string text) { try { var message = ob.MakeMessage(); message.Type = Microsoft.Bot.Connector.ActivityTypes.Message; message.Text = text; await PostAsyncWithDelay(ob, message); CallTimer(300000); if ("true".Equals(ConfigurationManager.AppSettings["disableEndConversation"])) { CallTimerInActivity(timeOut); } } catch (Exception ex) { Trace.TraceInformation(ex.Message); } } await context.PostAsyncWithDelay("Great!"); await context.PostAsyncWithDelay("I can help you with that.");
但是,收到它们之间没有延迟.这两条消息都是一次性收到的.
如何延迟第二条消息一段时间?
在根对话框中要延迟消息,可以使用Task.Delay方法.将PostAsyncWithDelay更改为:
public async static Task PostAsyncWithDelay(IDialogContext context, string text) { await Task.Delay(4000).ContinueWith(t => { var message = context.MakeMessage(); message.Text = text; using (var scope = DialogModule.BeginLifetimeScope(Conversation.Container, message)) { var client = scope.Resolve<IConnectorClient>(); client.Conversations.ReplyToActivityAsync((Activity)message); } }); }
如果要延迟消息,可以调用PostAsyncWithDelay方法,否则使用context.PostAsync方法发送消息.
private async Task MessageReceivedAsync(IDialogContext context, IAwaitable<object> result) { //Sending a message nomally await context.PostAsync("Hi"); //Notify the user that the bot is typing var typing = context.MakeMessage(); typing.Type = ActivityTypes.Typing; await context.PostAsync(typing); //The message you want to delay. //NOTE: Do not use context.PostAsyncWithDelay instead simply call the method. await PostAsyncWithDelay(context, "2nd Hi"); }
OUTPUT

