标签: taskservice

具有不同参数的策略模式

我在使用策略模式时遇到了一个问题.我正在实现创建任务的服务.此服务还解决了此任务的负责人员.解决职员是通过使用策略模式来完成的,因为有不同的方法可以做到这一点.关键是每个策略都需要不同的参数来解决职员.

例如:

interface ClerkResolver {
    String resolveClerk(String department);
}

class DefaultClerkResolver implements ClerkResolver {

    public String resolveClerk(String department) {
        // some stuff
    }
}

class CountryClerkResolver implements ClerkResolver {

    public String resolveClerk(String department) {
        // I do not need the department name here. What I need is the country.
    }

}
Run Code Online (Sandbox Code Playgroud)

问题是每个解析器可能依赖于不同的参数来解决负责的职员.对我来说,这听起来像是我的代码中的设计问题.我还尝试将一个类作为参数来保留策略可能需要的所有值,例如:

class StrategyParameter {

   private String department;
   private String country;

   public String getDepartment() ...
}

interface ClerkResolver {
    String resolveClerk(StrategyParameter strategyParameter);
}
Run Code Online (Sandbox Code Playgroud)

但说实话,我对这个解决方案并不满意,因为每当策略需要一个新的/不同的参数时我就必须更改参数类.其次,策略的调用者必须设置所有参数,因为他不知道哪个策略将解析职员,因此他必须提供所有参数(但这并不是那么糟糕).

同样,对我而言,这听起来像我的代码中的设计问题,但我找不到更好的解决方案.

---编辑

此解决方案的主要问题是创建任务时.任务服务如下所示:

class TaskService { …
Run Code Online (Sandbox Code Playgroud)

java design-patterns strategy-pattern taskservice

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

远程机器中的 C# 任务计划程序

我正在尝试设置一个可以在远程服务器中创建任务计划的程序。以下代码适用于本地机器,但是当我在远程服务器上尝试时,它会引发以下错误。

System.Runtime.InteropServices.COMException: '不支持该请求。(来自 HRESULT 的异常:0x80070032)'

void SetupDailyTask()
    {
        using (TaskService ts = new TaskService("servername.us.xxxxxdomain.com",
            @"domainname\username","domainname","password"))
        {
            //Task tsk = ts.GetTask("DailyTask");
            //if (tsk != null) { ts.RootFolder.DeleteTask("DailyTask"); }

            //DateTime dt = DateTime.Now;
            //TimeSpan tsp = new TimeSpan(12, 44, 0);
            //dt = dt.Date + tsp;
            //ts.Execute("notepad.exe").Once().Starting(dt).AsTask("DailyTask");
        }
    }
Run Code Online (Sandbox Code Playgroud)

我已经测试了凭据、服务器名称等,它们与远程桌面连接一起工作得很好。我正在使用Microsoft.Win32.TaskScheduler命名空间。非常感谢您对此的任何帮助。

c# taskservice taskscheduler

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