Después de una interesante conversación entorno a las diferencias de lenguaje “entre VB i C#” con mi amigo Jose María y de frente a la reiterativa discusión sobre la sintaxis… aquí os dejo el último ejemplo en C# para que lo comparéis con su anterior en VB.
Realmente pensáis que hay tanta diferencia como para continuar discutiendo cual mejor?, para poder apreciar los matices de cada uno de los lenguajes, como mínimo uno tiene que ser “bilingüe” y practicante pues en otro caso la discusión esta fuera de criterio…
El debate está servido! Jajajaja!.
using System; using System.Windows.Forms; using System.Threading; namespace ThreadProgressBar { public partial class frmMain : Form { System.Timers.Timer tmr = new System.Timers.Timer(1000); delegate void myDeleg(Form toClose); Form currentPrgBar = null; Boolean createPrgBar = false; Boolean disposePrgBar = false; public frmMain() { InitializeComponent(); } /// When form load private void frmMain_Load(object sender, EventArgs e) { tmr.Elapsed += tmr_Elapsed; tmr.Interval = 100; tmr.Start(); } /// When running button is presed private void simulateLoad(object sender, EventArgs e) { createPrgBar = true; btnRunning.Text = "Load in progress"; for (int i = 0; i < 10000; i++) { btnRunning.Text = "Running loop :" + i.ToString(); btnRunning.Refresh(); Application.DoEvents(); } btnRunning.Text = "Run New Loop"; disposePrgBar = true; } /// watch if any process are running to create a new progress bar void tmr_Elapsed(object sender, System.Timers.ElapsedEventArgs e) { if (createPrgBar & (currentPrgBar == null)) { Thread myThread = new Thread(onFlyProgressBar); myThread.Start(); createPrgBar = false; } else { if (disposePrgBar) { closeForm(currentPrgBar); disposePrgBar = false; } } } /// Create new 'processing' progressBar void onFlyProgressBar() { Label lblMessage = new Label { Dock = DockStyle.Top, Text = "Procesing, please wait..", TextAlign = System.Drawing.ContentAlignment.MiddleCenter, Font = new System.Drawing.Font("Microsoft Sans Serif", 14, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point) }; ProgressBar prgBar = new ProgressBar { Height = 15, Dock = DockStyle.Bottom, Style = ProgressBarStyle.Marquee }; currentPrgBar = new Form() { Width = 300, Height = 50, StartPosition = FormStartPosition.CenterScreen, ControlBox = false, FormBorderStyle = System.Windows.Forms.FormBorderStyle.Fixed3D }; currentPrgBar.Controls.AddRange(new Control[] { lblMessage, prgBar }); currentPrgBar.LostFocus += recoverFocus; Application.Run(currentPrgBar); } void recoverFocus(object sender, EventArgs e) { currentPrgBar.TopMost = true; } /// Make current prgBar topmost if lost focus void closeForm(Form toClose) { if (toClose == null) return; if (toClose.InvokeRequired) { toClose.Invoke(new myDeleg(closeForm), toClose); } else { toClose.Close(); currentPrgBar = null; } } } }
Que tengáis una excelente semana!
PepLluis,