Bueno chic@s, pues deciros que ya tengo mis alarmas creadas y funcionando perfectamente. jejejeje.
Gracias a todos por la ayuda
Gracias a todos por la ayuda
Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.
Mostrar Mensajes MenúCita de: raul338 en 14 Septiembre 2010, 23:40 PM
Justamente la comparacion que estoy haciendo es muy similar
Pues la verdad nunca uso los timer comunes, simpre los creo por codigo de la clase System.Timers y siempre hago Timer.Start y Timer.Stop
Cita de: raul338 en 14 Septiembre 2010, 22:25 PM
Yo hice un timer para apagar la pc a cierta hora, asi que lo que hago es esto
Creo un TimeSpan con la diferencia de horas desde "ahora" hasta la hora destinada de la tarea (apagado)
Con el timer cada 1 segundo le resto... precisamente 1 segundo
En el timer, si el timeSpan llega a 0 (y/o la hora de la tarea es la actual) simplemente hacer la tarea
O sea , puedes usar en el timer tantos if o timespan como tareas... aunque dudo que tengas muuchas tareas al mismo tiempo (como para ralentizar el timer) asi que es efectivo
private void Funcion_Reprogramar_Timer(bool valor)
{
if (valor == true)
{
GestorAvisos ga = new GestorAvisos();
DataTable tabla = ga.Obtener_Lista_Avisos(factoriaDAO, login);
if (tabla != null)
{
this.timerAlarmas.Enabled = false;
Tabla = tabla;
this.timerAlarmas.Enabled = true;
}
else
{
this.timerAlarmas.Enabled = false;
}
}
else
{
this.timerAlarmas.Enabled = false;
}
}
private void timerAlarmas_Tick(object sender, EventArgs e)
{
int i = 0;
int max = Tabla.Rows.Count;
int anno;
int hora, minutos, segundos;
int dia, mes, año;
for (i = 0; i < max; i++)
{
dia = Convert.ToInt32(Tabla.Rows[i][4].ToString().Substring(0, 2));
mes = Convert.ToInt32(Tabla.Rows[i][4].ToString().Substring(3, 2));
anno = Convert.ToInt32(Tabla.Rows[i][4].ToString().Substring(6, 4));
hora = Convert.ToInt32(Tabla.Rows[i][5].ToString().Substring(0, 2));
minutos = Convert.ToInt32(Tabla.Rows[i][5].ToString().Substring(3, 2));
segundos = Convert.ToInt32(Tabla.Rows[i][5].ToString().Substring(6, 2));
if ((DateTime.Now.Year == anno) &&(DateTime.Now.Month == mes) && (DateTime.Now.Day == dia) && (DateTime.Now.Hour == hora) && (DateTime.Now.Minute == minutos) &&
(DateTime.Now.Second == segundos))
{
this.timerAlarmas.Enabled = false;
MessageBox.Show(Tabla.Rows[i][2].ToString(), "ALARMA", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}
}
}
public override bool Restaurar_Copia(string dataBase, string ruta)
{
Boolean exito = false;
String queryRestore = "RESTORE DATABASE agenda FROM DISK = '" + ruta + "'" + " WITH REPLACE";
SqlConnectionStringBuilder csb = new SqlConnectionStringBuilder();
csb.DataSource = "(local)\\SQLEXPRESS";
// Es mejor abrir la conexión con la base Master
csb.InitialCatalog = "master";
csb.IntegratedSecurity = true;
using (SqlConnection con = new SqlConnection(csb.ConnectionString))
{
try
{
con.Open();
SqlCommand cmdBackUp = new SqlCommand(queryRestore, con);
cmdBackUp.ExecuteNonQuery();
MessageBox.Show("Se ha restaurado la copia de la base de datos.",
"Restaurar base de datos",
MessageBoxButtons.OK,
MessageBoxIcon.Information);
con.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message,
"Error al restaurar la base de datos",
MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
}
}
Cita de: [D4N93R] en 11 Septiembre 2010, 17:10 PM
Bueno, no creo que sea eso, el problema es que se te está llamando algo recursivamente, puede que sea el resize o algo. Ejecutalo y deja que te salga el Error, cuando tengas el error te sale esa ventanita del Exception, hay algo que dice StackTrace, pon eso acá.
Cita de: 43H4FH44H45H4CH49H56H45H en 11 Septiembre 2010, 17:49 PM
@Hartigan esto funciona bien en mi máquina.private void Form1_Resize(object sender, EventArgs e)
{
if (WindowState == FormWindowState.Minimized)
{
this.Hide();
notifyIcon1.Visible = true;
}
}
private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e)
{
this.Show();
this.WindowState = FormWindowState.Normal;
this.notifyIcon1.Visible = false;
}
Porque no pruebas en otro PC, o en una máquina virtual.
Cita de: [D4N93R] en 11 Septiembre 2010, 05:01 AM
Ese es todo el código que maneja el notifier y el minimizado de la ventana? no tienes más nada?
const int WM_SYSCOMMAND = 0x112;
const int SC_MINIMIZE = 0xF020;
const int SC_CLOSE = 0xF060;
......
.....
protected override void WndProc(ref Message m)
{
if (m.Msg == WM_SYSCOMMAND)
{
if (m.WParam == (IntPtr)SC_CLOSE)
Application.Exit();
base.WndProc(ref m);
}
else
base.WndProc(ref m);
}
.....