Foro Oficial de C#

Bueno otra pregunta, que tan recomendable es usar el Objeto Table adapter de .NET, aunque yo uso Dataset Tipados para generar los reportes de crytal report y me salen muy bien, que tan recomendable es usarlo para otros procedimientos, que tan cierto es que es mejor hacerlo todo a codigo puro y duro (Sinceramente para que pusiseron estos objetos en .NET si no son recomendables usarlos), que me aconsejan ustedes ?
 
Bueno otra pregunta, que tan recomendable es usar el Objeto Table adapter de .NET, aunque yo uso Dataset Tipados para generar los reportes de crytal report y me salen muy bien, que tan recomendable es usarlo para otros procedimientos, que tan cierto es que es mejor hacerlo todo a codigo puro y duro (Sinceramente para que pusiseron estos objetos en .NET si no son recomendables usarlos), que me aconsejan ustedes ?

Yo, personalmente yo, prefiero que el Visual Studio me haga todo y que me administre el codigo, y simplemente yo me dedico a lo que es, a hacer que el programa funcione, a mi cliente no le interesa si lo hice con dataAdapter, o con DataTables o Table Adapter, etc..., a ellos les importa que funcione bien. Realmente me parece que si ADO.NET inventó el DataAdapter, es porque es muchisimo mas funcional que el TableAdapter, es como el DataGrid, el .Net Framework 2.0 Inventó el DataGridView que tiene muchisimas mas opciones que el DataGrid del Framework 1.0.

Entre menos codigo administre yo, mejor, es mi opinion. Solo centrarse en el codigo que hay que administrar y ya.
 
C# – la palabra clave volatile, explicación y ejemplos

La palabra clave volatile es una de esas palabras clave muy pocas veces comprendidas, la documentación presente en msdn permite concluir que hay que utilizarla siempre que se manejen hilos, pero esto no siempre es así. Sin embargo lograr identificar que es lo que hace realmente esta palabra clave es una labor complicada así que dedicaré este artículo a explorar esta funcionalidad y a crear un ejemplo práctico que permita entender su verdadera naturaleza.

La documentación msdn
En msdn encontramos la siguiente definición de la palabra clave volatile:
La palabra clave volatile indica que varios subprocesos que se ejecutan a la vez pueden modificar un campo. Los campos que se declaran como volatile no están sujetos a optimizaciones del compilador que suponen el acceso por un subproceso único. Esto garantiza que el valor más actualizado está en todo momento presente en el campo

información completa

Debemos resaltar dos aspectos importantes de ese texto:

  1. Se menciona que los campos volatile no son susceptibles de optimizaciones por parte del compilador. Cuales optimizaciones?
  2. Dice que esto garantiza que el valor más actualizado siempre esta presente en el campo. No se supone que esto es así siempre?
A continuación revisaremos estas dos preguntas.

Ver articulo completo con ejemplos
 
  • Me gusta
Reacciones: 2 personas
Yo, personalmente yo, prefiero que el Visual Studio me haga todo y que me administre el codigo, y simplemente yo me dedico a lo que es, a hacer que el programa funcione, a mi cliente no le interesa si lo hice con dataAdapter, o con DataTables o Table Adapter, etc..., a ellos les importa que funcione bien. Realmente me parece que si ADO.NET inventó el DataAdapter, es porque es muchisimo mas funcional que el TableAdapter, es como el DataGrid, el .Net Framework 2.0 Inventó el DataGridView que tiene muchisimas mas opciones que el DataGrid del Framework 1.0.

Entre menos codigo administre yo, mejor, es mi opinion. Solo centrarse en el codigo que hay que administrar y ya.


bueno, man eso que dices lo creia yo antes de entrar a trabajar en un a empresa dedicada al desarrollo de software empresariales, y eso que dices de ADO .NET no es del todo cierto.
Eso sirve para aplicaciones de poca concurrencia, pero en aplicaciones que requieren alto Performance, usan otras librerias de Acceso a Datos (La entreprise Library) que es mas especializada y ofrece muchas mas ventajas que Ado.net.
Estoy estudiando esta libreria y resulta que es muy buena.
 
bueno, man eso que dices lo creia yo antes de entrar a trabajar en un a empresa dedicada al desarrollo de software empresariales, y eso que dices de ADO .NET no es del todo cierto.
Eso sirve para aplicaciones de poca concurrencia, pero en aplicaciones que requieren alto Performance, usan otras librerias de Acceso a Datos (La entreprise Library) que es mas especializada y ofrece muchas mas ventajas que Ado.net.
Estoy estudiando esta libreria y resulta que es muy buena.
enterprise library por debajo es ado...
de hecho enterprise llibrary es mas un conjunto de bloques de codigo ya construidos usando todo lo que ya tiene .net framework pero encapsulando las funcionalidades para resolver los problemas que mas comunmente se presentan en los desarrollos empresariales.

---
fuera de esta acotación opino que ADO.net ( o los objetos creados a aprtir de este en EL ) es mas que suficiente la gran inmensa mayoria de los casos, pero hay casos puntuales endonde debes omitir el uso de algunas funcionalidades de proposito general para crear soluciones especializadas a un problema especifico para poder obtener un rendimiento apropiado.

Es como linQ... esta ok en la mayoria de escenario y te ahorrara mucho tiempo de desarrollo y mantenimiento, pero mal utilizada o utilizada en un ambiente altísimamente exigente será mejor seguir el esquema tradicional 'manual'.

Esos ambientes o entornos altamente exigentes son escasos... pero excepcionalmente se dan.

más info de enterprise library:

http://msdn.microsoft.com/en-us/library/cc467894.aspx
 
Oye Juank, done se podran hacer la certificacion MCP aca en la Costa, no tienes idea ya que he buscado y nada. no encuentro nada.
 
hola! me van a ayudar con un codiguito para manejar el puerto paralelo por c# solo prender y apagar una lampara, porq por ahi lei sobre q usara el inpout32.dll pero baje el archivo pero no se como llamarlo al codigo ni donde lo tengo q hubicar en mi disco duro, tambien encontre esto pero me saca varios errores
using System;
using System.Runtime.InteropServices;

public class PortAccess
{
[DllImport("inpout32.dll", EntryPoint="Out32")] // este es el q me saca el error
public static extern void Output(int adress, int value);
}
PortAccess.Output(888, 255); //prender todas las luces
PortAccess.Output(888, 0); //apagar todas las luces


El inpout32.dll tienes que copiarlo en c:\windows\system32\, si no esta aqui es seguro que te va a arrojar un error en la linea [DllImport("inpout32.dll", EntryPoint="Out32")]
por cierto aqui tienes que ubicar la direccion que utiliza el puerto paralelo que estas trabajando por defecto es [DllImport("inpout32.dll", EntryPoint="888")] si en tu pc tienes un solo puerto lpt. Espero que te haya servido.
 
El inpout32.dll tienes que copiarlo en c:\windows\system32\, si no esta aqui es seguro que te va a arrojar un error en la linea [DllImport("inpout32.dll", EntryPoint="Out32")]
por cierto aqui tienes que ubicar la direccion que utiliza el puerto paralelo que estas trabajando por defecto es [DllImport("inpout32.dll", EntryPoint="888")] si en tu pc tienes un solo puerto lpt. Espero que te haya servido.
bueno solom que respondiste un año despues :p

y por cierto no es necesario hacer todo eso, la clase SerialPort ya se encarga del manejo de puertos.
 
C# – El extraño caso de la ventana sin borde que no se deja maximizar ni minimizar

En algunas aplicaciones llega a ser necesario tener una ventana sin borde en algún momento, una ventana sin borde se logra estableciendo la propiedad FormBorderStyle = None en el diseñador de Windows Forms o a través de código:

this.FormBorderStyle = FormBorderStyle.None;

Hasta ahí todo esta bien y no hay ningún problema al respecto, hasta que nos damos cuenta que una ventana sin borde no se deja maximizar ni minimizar.
De esto tratare en este artículo, el porqué de esta situación y como solucionarlo.

Como sabe una ventana que se debe maximizar o minimizar?

El bucle de mensajes

Las ventanas – y los demás controles – funcionan gracias a un bucle de mensajes, todo lo que manejamos nosotros como eventos : click del mouse, mover, cerrar, cambiar tamaño, maximizar etc, realmente es controlado por un bucle en donde se envían diferentes mensajes a la ventana, esta a su vez tiene un procedimiento que recibe estos mensajes y con base a los mensajes recibidos puede hacer una u otra cosa según se programe.

Si, para algunos esto ya debe estar sonando a cuento, pero las cosas son así por debajo de lo que usamos tradicionalmente. El tema del artículo no es explicar como funciona un ciclo de mensajes así que por el momento lo dejaremos hasta allí y quien quiera profundizar puede consultar esta fuente en internet http://www.winprog.org/tutorial/message_loop.html

Por el momento lo que si nos interesa del bucle de mensajes es que algunos de esos mensajes se utilizan para maximizar y minimizar las ventanas, es decir cuando uno utiliza alguna funcionalidad para minimizar una ventana, lo que ocurre realmente es que se envía el mensaje que dice: hey! minimízate y ya el manejador de la ventana hará lo necesario para minimizarse.

El problema de la ventana sin borde.

Resulta que cuando se crea una ventana el sistema de ventanas se encarga de asignar ciertas características de acuerdo a sus parámetros de creación, una de esas características es incluir llamados a las funciones internas de Windows Forms que minimizan y maximizan ventanas, pero cuando se esta creando una ventana sin borde, al no tener esta los botones de minimizar o maximizar simplemente se pasa por alto la necesidad de incluir llamados a esas funciones.

Puedes ver el artículo completo en mi blog:
http://juank.black-byte.com/c-minimizar-maximizar-ventana-sin-borde/
---
 
Una pregunta

MCP > MCTS?

Como es el cuento de la certificaciones que no lo entiendo bien :p

Pregunto porque me quiero hacer con varias certificaciones (por lo menos con la DCE y la MCTS) y quiero saber bien como es :p
 
Una pregunta

MCP > MCTS?

Como es el cuento de la certificaciones que no lo entiendo bien :p

Pregunto porque me quiero hacer con varias certificaciones (por lo menos con la DCE y la MCTS) y quiero saber bien como es :p

Poster PDF con información acerca de certificaciones de desarrollo: http://cid-c16836096f6c50b2.skydrive.live.com/self.aspx/TrainCert-Posters/VSMap.pdf

Poster PDF con información general de certificación : http://cid-c16836096f6c50b2.skydrive.live.com/self.aspx/TrainCert-Posters/Certifications|_at|_a|_Glance.pdf

ambos tomados del Blog de Guillermo Taylor .
 
Hola:
Resulta que estaba con problemas buscando como hacer que cuando presionaran la x de una ventana para cerrarla, esta hiciera otras cosas en lugar de cerrarse.

Busque y me di cuenta que podia modificar esto programando el evento FormClosing(); en este yo cancelaba la cerrada (e.Cancel = true;) y luego procedia a decirle lo que yo queria que hiciera.

El problema fue que luego la ventana no dejaba que la aplicacion cerrara cuando se llamaba al metodo Application.Exit();

Me puse a buscar y encontre este codigo:

Código:
protected override void WndProc(ref System.Windows.Forms.Message m)
        {
            if(m.Msg != 0x0010)
            {
                base.WndProc(ref m);
            }
            else
            {
                //Windows has send the WM_CLOSE message to your form.
                //Ignore this message will make the window stay open.
            }
        }

EDIT:
Edito para comentarles que tampoco funciono :muerto: Me faltaba descomentar unas lineas para darme cuenta que funcionaba iwal.

El punto es: Como hago para modificar el cerrado de una ventana para que no cierre con el boton (X) pero que si pueda ser cerrada por la aplicacion general.
Aca les pongo el metodo FormClosing del formulario para que de pronto me entiendan mejor:

Código:
private void GoTo_FormClosing(object sender, FormClosingEventArgs e)
        {
            //Cancelando la cerrada del formulario
            e.Cancel = true;

            //Logout del usuario
            this.dbLogIOC.logout(this.loginSys.UserSystem);

            this.Visible = false;
            loginSys.Visible = true;
        }
 
Hola:
Resulta que estaba con problemas buscando como hacer que cuando presionaran la x de una ventana para cerrarla, esta hiciera otras cosas en lugar de cerrarse.

Busque y me di cuenta que podia modificar esto programando el evento FormClosing(); en este yo cancelaba la cerrada (e.Cancel = true;) y luego procedia a decirle lo que yo queria que hiciera.

El problema fue que luego la ventana no dejaba que la aplicacion cerrara cuando se llamaba al metodo Application.Exit();

Me puse a buscar y encontre este codigo:

Código:
protected override void WndProc(ref System.Windows.Forms.Message m)
        {
            if(m.Msg != 0x0010)
            {
                base.WndProc(ref m);
            }
            else
            {
                //Windows has send the WM_CLOSE message to your form.
                //Ignore this message will make the window stay open.
            }
        }
No fue si no ponerlo en la clase del formulario y funciono perfecto, pero la vuelta es de aprendizaje. Quiero saber que es lo que esta haciendo ese metodo que hace capaz al formulario de atender el cerrado desde cualquier otro formulario y no el del boton de la propia ventana.


Casualmente en el último artículo de mi blog esta la respuesta: http://juank.black-byte.com/c-minimizar-maximizar-ventana-sin-borde/

desde luego la idea es que lo leas y la saques por ti mismo, pero si tienes inconvenientes pregunta y aclarare tus dudas.


aunque para tu caso simplemente modirficando el compotamiento de FormClosing lo hubieras podido hacer ya que alli se puede preguntar quien mando cerrar la ventana, y de acuerdo a ello puedes decidir hacer una cosa u otra.
 
Estoy en el trabajo y aunque el problema es con un proyecto de aca no me puedo gastar tanto rato leyendolo, asi que ahora en la noche o maniana en la tarde (estando en mi casa) lo leo y te comento si me funciono.

Mil gracias.
 
Estoy en el trabajo y aunque el problema es con un proyecto de aca no me puedo gastar tanto rato leyendolo, asi que ahora en la noche o maniana en la tarde (estando en mi casa) lo leo y te comento si me funciono.

Mil gracias.
Es así:

Código:
        private void Form1_FormClosing (object sender, FormClosingEventArgs e)
        {
            if (e.CloseReason == CloseReason.ApplicationExitCall
                || e.CloseReason == CloseReason.WindowsShutDown
                )
                e.Cancel = false;
            else
            {
                e.Cancel = true;
                MessageBox.Show("No me puedes cerrar asi");
            }
        }

En todo caso por conocimiento y porque se que te servirá de mucho te recomiendo que leas el articulo y el link que allí relaciono.
 
  • Me gusta
Reacciones: 2 personas
Hola:

Alguien sabe que propiedades se deben editar para poder hacer que una ventana trabaje como un cuadro de dialogo. Es decir, cuando yo presiono determinado boton en un formulario (form1) este abre otra ventana (form2), pero necesito que mientras form2 este abierto no le pueda dar el foco a form1; osea que el form1 quede deshabilitado.

He intentado hacerlo con todo le que tiene que ver con focus y ni modo, y tampoco encuentro nada... alguna ayuda?
 
Hola:

Alguien sabe que propiedades se deben editar para poder hacer que una ventana trabaje como un cuadro de dialogo. Es decir, cuando yo presiono determinado boton en un formulario (form1) este abre otra ventana (form2), pero necesito que mientras form2 este abierto no le pueda dar el foco a form1; osea que el form1 quede deshabilitado.

He intentado hacerlo con todo le que tiene que ver con focus y ni modo, y tampoco encuentro nada... alguna ayuda?


Código:
Form a = new Form1();
a.ShowDialog();
 
Ja, yo tengo una duda medio colgada.. uso C#, pero mi duda abarca más allá..
Vieron que cuando uno crea una aplicación, está el assembly.cs (en el caso de C#), con datos como la versión, la companía y un par de cosas más...
En algún momento cambié el default que hace que aparezca Microsoft en la companía y otros campos, y ahora que lo quiero volver a cambiar, no sé de dónde lo hice!! y realmente cambiarlo en cada aplicación me está cansando.
Alguien se acuerda de dónde era que se modificaba esa información?

JuaK, muy bueno el blog, estoy estudiando Ingeniería en Informática, pero lo que más me apasiona de todo es la programación, y vi que tu blog lo tenés muy bien atendido =) ya voy a andar leyendo bastante por ahí =)

Espero respuestas =)
 

Los últimos temas