我坚持使用Quartz.NET cron触发器.我能够将我的所有场景与下面的场景区分开来.
我设法做到了这一点
0 31 15 ? * MON#2 *
每周一触发一次.
它会起作用0 31 15 ? * MON#2,TUE#2,WED#2 *吗?
我尝试在http://www.cronmaker.com上测试它,但它只显示星期一作为即将到来的日期.我唯一的要求是保持简单 - 即.不超过一个触发器.
我在Visual Studio 2010中构建项目时遇到了问题.我不确定为什么在构建此项目时它会尝试构建为Platform ="BWS".

我检查了项目中的所有文件,但我找不到BWS的任何内容.似乎由于这个原因,我所引用的所有项目都没有建立.
另外,是否可以引用csproj中的其他项目?
我试图在Quartz.NET中每3个月(每季度)调用一次(使用稳定版和最新版本2,测试结果相同).
我创建了cron触发器,0 30 8 3 */3 ? *每月3点30分在它发生的第三个月的第三个月被调用.
从技术上来说,从今天的9月2日开始,我预计它将在明天触发.然而,它的下一个运行时间显示为下个月.为什么会这样?
更新:根据我得到的答案,我创建了以下方法 - 可能对某些人有用:
public static string CalculateMonthsWithInterval(int startMonth, int interval)
{
var months = new List<string>();
var monthNames = new [] {"JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC"};
var monthSelector = startMonth % interval;
for (var i = 0; i < 12; i++)
{
if (i % interval == monthSelector)
{
months.Add(monthNames[i]);
}
}
return string.Join(",", months.ToArray());
}
Run Code Online (Sandbox Code Playgroud)
Ps:我几个月没有使用索引,因为由于某些原因它与我的Quartz(v2 BETA)不兼容.此外,它在数据库级别更容易阅读.
示例调用 - 基于startDate的每3个月:
var …Run Code Online (Sandbox Code Playgroud) 如何创建从今天开始每3个月(每季度)触发一次的触发器.
我虽然可以做一些简单的事情
tr = TriggerUtils.MakeHourlyTrigger(2190);
// (365 / 4) * 24 hours = 2190
Run Code Online (Sandbox Code Playgroud)
我不认为这是解决这个问题的最佳方法.我虽然可能有一些花哨的cron触发方式来解决它?
我有X个RadioButtons(Silverlight).通常这个值在2-5之间.称之为"开关".每个单选按钮都绑定到该类的属性.
示例属性看起来像
private bool _radio1;
public bool Radio1{
set{
_radio1 = value;
_radioX = !value; // make all others false
}
get{ return _radio1 }
}
Run Code Online (Sandbox Code Playgroud)
基本思想是,如果选择一个无线电,则关闭所有其他无线电.
我尝试过使用其他方法,与使用模板创建列表相比,这个方法似乎最简单(特别是在某些情况下我有其他按钮涉及无线电)
目前我有两个要求,我需要一个具有2个属性的类(例如,男性/女性)复选框和3个属性.
未来可能会有更多,因此为什么我认为为X量的单选按钮编写一个新类是愚蠢的.
有没有以某种方式使多个属性动态?我看到了一些字典方法.
我看到了这种方法 如何在C#中创建动态属性?
我不知道如何绑定它.
我有一个TextBoxes列表,它们绑定到不同的属性.
<TextBox Text="{Binding Name, Mode=TwoWay,ValidatesOnDataErrors=True, ValidatesOnExceptions=True, NotifyOnValidationError=True}" VerticalAlignment="Center" Margin="5" Width="300" Grid.Column="1" Grid.Row="1" LostFocus="TextBox_Validate"/>
Run Code Online (Sandbox Code Playgroud)
我想写一个处理程序,如
private void TextBox_Validate(object sender, RoutedEventArgs e)
{
var textBox = (sender as TextBox);
if(textBox!=null)
{
var propertyName = X; // Get propertyName textBox.Text is bound to.
CurrentDataContext.ValidateFields("Name"); // Name in this specific textBox
}
}
Run Code Online (Sandbox Code Playgroud)
是否有可能获得属性的名称,所以我不必编写许多不同的方法来做同样的事情?
我正在使用 Quartz 提取最新任务(从另一个来源),然后将其添加为作业,为每个任务创建触发器等。- 简单的。
然而,有时任务会发生变化(因此它们已经存在)。因此我想更改它(让我们说保持简单Description。下面的代码使用给定日期更新特定任务的描述。
private static void SetLastPull(DateTime lastPullDateTime)
{
var lastpull = sched.GetJobDetail("db_pull", "Settings");
if(lastpull != null)
{
lastpull.Description = lastPullDateTime.ToString();
}
else
{
var newLastPull = new JobDetail("db_pull", "Settings", typeof(IJob));
newLastPull.Description = lastPullDateTime.ToString();
var newLastPullTrigger = new CronTrigger("db_pull", "Settings", "0 0 0 * 12 ? 2099");
sched.ScheduleJob(newLastPull, newLastPullTrigger);
}
}
Run Code Online (Sandbox Code Playgroud)
我假设在我这样做之后lastpull.Description = lastPullDateTime.ToString();我应该调用一些东西来保存对数据库的更改。有没有办法在 Quartz 中做到这一点,或者我必须使用其他方式并更新它?
c# ×6
quartz.net ×4
scheduling ×3
binding ×2
data-binding ×2
silverlight ×2
csproj ×1
msbuild ×1