C# 通过按住线程模拟键入
我正在编写一个bot,其中包含一个组件,通过通知用户“bot正在键入…”来模拟键入。为此,必须每10秒通知托管bot的服务提供商bot仍在工作 机器人“键入”的秒数仅由字符串长度除以“字符/秒”的任意值决定C# 通过按住线程模拟键入,c#,performance,C#,Performance,我正在编写一个bot,其中包含一个组件,通过通知用户“bot正在键入…”来模拟键入。为此,必须每10秒通知托管bot的服务提供商bot仍在工作 机器人“键入”的秒数仅由字符串长度除以“字符/秒”的任意值决定 var text=“这是我的回答!”; var-alertServiceInSeconds=10; 变量延迟=文本长度/(双)字符秒; 因此,必须执行两个任务:在延迟期间休眠线程,同时每隔调用一个方法alertServiceInSeconds 我尝试了几种方法,但bot似乎在delay+a
var text=“这是我的回答!”;
var-alertServiceInSeconds=10;
变量延迟=文本长度/(双)字符秒;
因此,必须执行两个任务:在延迟期间休眠线程,同时每隔调用一个方法alertServiceInSeconds
我尝试了几种方法,但bot似乎在delay+alertServiceInSeconds
秒内响应,而不仅仅是delay
秒。我在这所小学的数学课上肯定遗漏了什么
而秒表已经过去了
发件人:
我觉得这种方法应该会伤害我的灵魂,因为调用Math.Abs
的次数太多了。此外,调用TriggerTyping的频率比调用alertServiceInSeconds
的频率更高
var stopwatch=new stopwatch();
秒表。开始();
while(秒表时间
线,睡觉
这似乎完成了工作,但不像前面提到的那样准确
for(变量i=0;i
问题:
这是如何导致bot在delay+alertServiceInSeconds
秒内“键入”的
这些方法的策略可以吗?睡眠循环和依赖于时间跨度的while循环似乎都有缺陷,但我想不出更好的方法
您需要的不是alertServiceInSeconds%1,而是alertServiceInSeconds%10
您还可以从任务调度库和队列中获益。似乎您真的需要一个计时器,您的%1将始终为0,因此不确定这是什么about@KeithNicholas我最终使用了你的建议,并阅读了所有相关内容。我不确定我是如何没有偶然发现计时器的,但唉,我在这里。如果可以的话,我会用你的评论来回答这个问题。