小编Man*_*y D的帖子

使用定时器间隔与任务延迟的重复任务

我正在实施像方法这样的预定工作,并且已经缩小到方法的范围。一个实现定时器间隔,另一个基于任务延迟。

我也考虑过使用 Azure Timer 触发的 webjobs,但它们在多实例模式下不起作用。实际上,在多实例应用程序中,只有一个触发器在其中一个实例中被触发,而其他触发器被锁定,因此增加我的应用程序的实例计数并不会增加触发的事件数量。

方法A(定时器间隔)

using System;
using System.Threading.Tasks;
using System.Timers;

public class Example
{
    public static void Main()
    {
        var aTimer = new Timer();
        aTimer.Interval = 5000;
        aTimer.Elapsed += OnTimedEventA;
        aTimer.AutoReset = true;
        aTimer.Enabled = true;

        var bTimer = new System.Timers.Timer();
        bTimer.Interval = 2000;
        bTimer.Elapsed += OnTimedEventB;
        bTimer.AutoReset = true;
        bTimer.Enabled = true;

        Console.WriteLine("Press the Enter key to exit the program at any time... ");
        Console.ReadLine();
    }
    private static void OnTimedEventA(Object source, System.Timers.ElapsedEventArgs e)
    {
        Task.Run(() => …
Run Code Online (Sandbox Code Playgroud)

c#

11
推荐指数
1
解决办法
1万
查看次数

从对话框调用表单

我有一个简单的表格,

 [Serializable]
class CreateNewLeadForm
{
    public string FirstName;
    public string LastName;
    public static IForm<CreateNewLeadForm> BuildForm()
    {

        return new FormBuilder<CreateNewLeadForm>()
            .Message("Lets create a New Lead")
            .Field(nameof(FirstName))
            .Field(nameof(LastName))
            .Build();

    }
};
Run Code Online (Sandbox Code Playgroud)

还有一个简单的对话框,

public class GreetDialog : IDialog<object>
{        
    public async Task StartAsync(IDialogContext context)
    {

        context.Wait(MessageReceivedAsync);
    }
    public   async Task MessageReceivedAsync(IDialogContext context, IAwaitable<Message> argument)
    {
       context.Wait(MessageReceivedAsync);
    }  
}  
Run Code Online (Sandbox Code Playgroud)

如何从主对话本身调用启动FormDialog?一般来说,我们如何在Dialog中开始新的对话框?

c# botframework

5
推荐指数
1
解决办法
5213
查看次数

Ionic2:将文件选择器uri转换为文件路径

Ionic native分别提供File Chooser和File插件.File插件需要读取文件的绝对路径,但无法选择文件.

为了选择文件,我使用了File Chooser,它返回一个URI.

import { FileChooser } from '@ionic-native/file-chooser';

constructor(private fileChooser: FileChooser) { }

...

this.fileChooser.open()
  .then(uri => console.log(uri))
  .catch(e => console.log(e));
Run Code Online (Sandbox Code Playgroud)

uri看起来像这样

content://com.android.providers.media.documents/document/image%3A68
Run Code Online (Sandbox Code Playgroud)

文件插件可以通过利用路径读取文件.

import { File } from '@ionic-native/file';

constructor(private file: File) { }

...

this.file.readAsText(this.file.dataDirectory, 'myFile')
.then((content) =>
       console.log(this.file.dataDirectory + 'myFile');
       console.log(content)
).catch( err => 
       console.log('File doesnt exist')
);
Run Code Online (Sandbox Code Playgroud)

路径看起来像这样.

file:///data/data/com.myapp.myappmobile/files/myFile
Run Code Online (Sandbox Code Playgroud)

我如何利用这两个组件.使用FileChooser选择一个文件,然后在Ionic 2中读取它.

ionic-framework ionic2

3
推荐指数
1
解决办法
8276
查看次数

可配置的计时器触发器 - Azure Web作业

我正在建立一个工作,以定期间隔(比如1分钟)触发.我已成功使用触发式Web作业,并在函数中使用时间跨度硬编码.

public void foo([TimerTrigger("00:01:00")] TimerInfo timer)
Run Code Online (Sandbox Code Playgroud)

现在,如果我想将触发时间从1分钟更改为2分钟,我将重新部署代码.相反,有没有办法从配置文件中使TimeTrigger可配置.

请注意,无法使用动态读取值替换字符串,因为TimerTrigger属性是常量字符串表达式或类型.

c# azure-webjobs azure-webjobssdk webjob

3
推荐指数
3
解决办法
2830
查看次数