Ver Mensaje Individual
  #1 (permalink)  
Antiguo 18/11/2011, 03:32
eloy_ameneiros
 
Fecha de Ingreso: julio-2010
Mensajes: 93
Antigüedad: 13 años, 9 meses
Puntos: 0
Error Tread al mostrar folderbrowserdialog

Hola a todos, el problema es el siguiente. Cuando yo ejecuto este código:

private void CrearArchivos(DataTable dtt, int npag)
{
if (fbdguardar.ShowDialog() == DialogResult.OK)
{
const string FIELDSEPARATOR = "\t";
const string ROWSEPARATOR = "\n";
StringBuilder output = new StringBuilder();
// Escribir encabezados
foreach (DataColumn dc in dtt.Columns)
{
output.Append(dc.ColumnName);
output.Append(FIELDSEPARATOR);
}
output.Append(ROWSEPARATOR);
foreach (DataRow item in dtt.Rows)
{
foreach (object value in item.ItemArray)
{
output.Append(value.ToString().Replace('\n', ' ').Replace('\r', ' ').Replace('.', ','));
output.Append(FIELDSEPARATOR);
}
// Escribir una línea de registro
output.Append(ROWSEPARATOR);
}
// Valor de retorno
// output.ToString();
StreamWriter sw = new StreamWriter(fbdguardar.SelectedPath + "\\Registros" + npag.ToString() + ".xlsx");
sw.Write(output.ToString());
sw.Close();
}
}

Me tira el siguiente error en lo marcado de rojo:

El subproceso actual debe establecerse en el modo de subprocesamiento controlado simple (Single Thread Apartment, STA) para poder realizar llamadas OLE. Asegúrese de que la función Main tiene marcado STAThreadAttribute. Esta excepción sólo se desencadena si se adjunta un depurador al proceso.

El main del subproceso principal lo tengo asi:

[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(fals e);
Application.Run(new CompCampañas());
}

Llevo un par de días con este error y no logro subsanarlo, si me podeis hechar una mano os lo agradezco.

Un saludo,

Eloy