| 
	
		|  Autor | Tema: Error programando las tareas (C#)  (Leído 8,212 veces) |  
	| 
			| 
					
						| Hartigan 
								 
								
								 Desconectado 
								Mensajes: 310
								
								
								
								
								
								   | 
 
HOla compis bueno pues os comento que al final he decidido programar yo mismo las tareas de mi agenda usando las clases del programador de tareas de windows. Entonces he conseguido ya programar algunas tareas pero no consigo establecer algunos parametros referentes al IRepetitionPattern y son el Duration y el INterval. mi código: TaskSchedulerClass scheduler = new  TaskSchedulerClass();            scheduler.Connect(null, null, null, null);             ITaskDefinition task = scheduler.NewTask(0);             task.RegistrationInfo.Author = autor;            task.RegistrationInfo.Description = descripcion;             ITaskSettings settings = task.Settings;            settings.Enabled = true;            settings.Hidden = false;            switch(recurrencia)            {                case "horaria":                    ITimeTrigger trigger = (ITimeTrigger)task.Triggers.Create(_TASK_TRIGGER_TYPE2.TASK_TRIGGER_TIME);                   trigger.Enabled = true;                   trigger.Id = nombre;                    trigger.StartBoundary = fecha.Substring(6, 4).ToString() + "-" + fecha.Substring(3, 2).ToString() + "-" + fecha.Substring(0, 2).ToString() +                       "T" + hora;                   if(fechaFin != string.Empty)                   {                       trigger.EndBoundary = fechaFin.Substring(6, 4).ToString() + "-" + fechaFin.Substring(3,2).ToString() + "-" + fechaFin.Substring(0, 2).ToString() +                           "T" + horaFin;                   }                   break;                case "diaria":                   IDailyTrigger dailyTrigger = (IDailyTrigger)task.Triggers.Create(_TASK_TRIGGER_TYPE2.TASK_TRIGGER_DAILY);                   dailyTrigger.Enabled = true;                   dailyTrigger.Id = nombre;                   dailyTrigger.DaysInterval = Convert.ToInt16(textBoxDia.Text.ToString());                   IRepetitionPattern rp = (IRepetitionPattern)dailyTrigger.Repetition;                 /*  if (checkBoxRepetir.Checked == true)                   {                       rp.Duration = TimeSpan.FromMinutes(int.Parse(this.textBoxDuracion.Text.ToString());                       rp.Interval = TimeSpan.FromMinutes(60);                                          }*/                   dailyTrigger.StartBoundary = fecha.Substring(6, 4).ToString() + "-" + fecha.Substring(3, 2).ToString() + "-" + fecha.Substring(0, 2).ToString() +                       "T" + hora;                   if (fechaFin != string.Empty)                   {                       dailyTrigger.EndBoundary = fechaFin.Substring(6, 4).ToString() + "-" + fechaFin.Substring(3, 2).ToString() + "-" + fechaFin.Substring(0, 2).ToString() +                           "T" + horaFin;                   }                    break;            }              IShowMessageAction mensaje = (IShowMessageAction)task.Actions.Create(_TASK_ACTION_TYPE.TASK_ACTION_SHOW_MESSAGE);            mensaje.Id = "My mensaje";            mensaje.Title = titulo;            mensaje.MessageBody = mensaje.ToString();             ITaskFolder root = scheduler.GetFolder("\\");            IRegisteredTask regTask = root.RegisterTaskDefinition(nombre, task, (int)_TASK_CREATION.TASK_CREATE_OR_UPDATE, null, null, _TASK_LOGON_TYPE.TASK_LOGON_NONE, "");          .......
 Lo que está comentado es lo que no consigo hacer funcionar he visto algunos ejemplos y debería estar bien pero a mi no me funcoina porque me dice que no se puede convertir el tipo string en TimeSpan. Como podria hacerlo??? Salu2.
 
 |  
						| 
								|  |  
								| « Última modificación:  9 Septiembre 2010, 04:58 am por [D4N93R] » |  En línea | 
 
 |  |  |  | 
			| 
					
						| Hartigan 
								 
								
								 Desconectado 
								Mensajes: 310
								
								
								
								
								
								   | 
 
Bueno me respondo diciendo que ya me ha funcionado. ya programo tareas en mi agenda. xDD  
 
 |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| [D4N93R] 
								Wiki  Desconectado 
								Mensajes: 1.646
								
								 
								My software never has bugs. Its just features!
								
								
								
								
								
								     | 
 
Yo estaba por responderte xD Pero bueno, postea tu solución a ver que tal. |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| Hartigan 
								 
								
								 Desconectado 
								Mensajes: 310
								
								
								
								
								
								   | 
 
jejeje, el problema estaba en que el valor de la duración tenia que ser mayor que la del intervalo de repetición por eso me daba error. Lo he dejado así:   .... TaskSchedulerClass scheduler = new  TaskSchedulerClass();            scheduler.Connect(null, null, null, null);             ITaskDefinition task = scheduler.NewTask(0);             task.RegistrationInfo.Author = autor;            task.RegistrationInfo.Description = descripcion;             ITaskSettings settings = task.Settings;            settings.Enabled = true;            settings.Hidden = false;             try            {                 switch (recurrencia)                {                    case "horaria":                         ITimeTrigger timeTrigger = (ITimeTrigger)task.Triggers.Create(_TASK_TRIGGER_TYPE2.TASK_TRIGGER_TIME);                        timeTrigger.Enabled = true;                        timeTrigger.Id = nombre;                         timeTrigger.StartBoundary = fecha.Substring(6, 4).ToString() + "-" + fecha.Substring(3, 2).ToString() + "-" + fecha.Substring(0, 2).ToString() +                            "T" + hora;                        if (fechaFin != string.Empty)                        {                            timeTrigger.EndBoundary = fechaFin.Substring(6, 4).ToString() + "-" + fechaFin.Substring(3, 2).ToString() + "-" + fechaFin.Substring(0, 2).ToString() +                                "T" + horaFin;                        }                         if (checkBoxRepetir.Checked == true)                        {                            if (duracion != string.Empty)                                timeTrigger.Repetition.Duration = duracion;                            timeTrigger.Repetition.Interval = "PT" + repeticion.ToString() + "M";                        }                        break;                     case "diaria":                         IDailyTrigger dailyTrigger = (IDailyTrigger)task.Triggers.Create(_TASK_TRIGGER_TYPE2.TASK_TRIGGER_DAILY);                        dailyTrigger.Enabled = true;                        dailyTrigger.Id = nombre;                        dailyTrigger.StartBoundary = fecha.Substring(6, 4).ToString() + "-" + fecha.Substring(3, 2).ToString() + "-" + fecha.Substring(0, 2).ToString() +                            "T" + hora;                        if (fechaFin != string.Empty)                        {                            dailyTrigger.EndBoundary = fechaFin.Substring(6, 4).ToString() + "-" + fechaFin.Substring(3, 2).ToString() + "-" + fechaFin.Substring(0, 2).ToString() +                                "T" + horaFin;                        }                        dailyTrigger.DaysInterval = Convert.ToInt16(textBoxDia.Text.ToString());                         if (checkBoxRepetir.Checked == true)                        {                            if (duracion != string.Empty)                                dailyTrigger.Repetition.Duration = duracion;                            dailyTrigger.Repetition.Interval = "PT" + repeticion.ToString() + "M";                        }                         break; ........
 Espero que le sirva a alguien.  Salu2   |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| Hartigan 
								 
								
								 Desconectado 
								Mensajes: 310
								
								
								
								
								
								   | 
 
Tengo un nuevo problema y es el siguiente. 
 en un formulario tengo los 12 meses del año, cada uno es un checkBox.
 
 Necesito pasar datos a una variable de la siguiente forma:
 
 
 variable = 2|4|8
 
 Esos números son los meses del año marcados del formulario. Como podría hacerlo???
 
 gracias de antemano.
 |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| [D4N93R] 
								Wiki  Desconectado 
								Mensajes: 1.646
								
								 
								My software never has bugs. Its just features!
								
								
								
								
								
								     | 
 
Si es string tienes dos formas:
 1.- Muchos if y verifica que cuando uno este checked le concatenas el valor al string..
 2.- Esta es mejor, metes los checkboxes dentro de un panel o algo, y haces un foreach (control c in nombredelpanel.Controls) dentro del foreach verificas si c es de tipo CheckBox, esto lo haces así: if(c is CheckBox) si es afirmativo entonces verificas el checked y haces lo que tengas que hacer, en este caso concatenar el valor del checkbox.
 
 El valor lo puedes tener guardado en una propiedad llamada tag que tienen todos los controles.
 
 Saludos!
 |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| Hartigan 
								 
								
								 Desconectado 
								Mensajes: 310
								
								
								
								
								
								   | 
 
esque la variable no es un string, sno que es un short!!!!! ya había probado a concatenar todo mediante if's pero claro, al convertirla a short no me la reconoce bien...  |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| [D4N93R] 
								Wiki  Desconectado 
								Mensajes: 1.646
								
								 
								My software never has bugs. Its just features!
								
								
								
								
								
								     | 
 
Revisa si es flag esa propiedad.. si es así puedes hacerlo , sino, hay algo mal. |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  |  |  | 
			| 
					
						| [D4N93R] 
								Wiki  Desconectado 
								Mensajes: 1.646
								
								 
								My software never has bugs. Its just features!
								
								
								
								
								
								     | 
 
Bueno puedes hacer un enum con los valores Hexadecimales y luego hacer bitwise. De esa forma puedes pasar los meses que quieras. Por ejemplo  short january  =0X01    ;// binario es 0000000001short october =0X200   ;// binario es 1000000000long result=january  & october ; //binario es 1000000001
 Fíjate que es & y no && que es diferente.  Un saludo! |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  |  |  
 
	
 
   |