Witam,
Mam maly problem - chcialbym w osobnym watku uruchomic trace'y firebirda a pozniej je elegancko zakonczyc przy uzyciu metody stop.
tak wyglada funkcja main - forma ma 2 buttony start/stop i textbox z ktorego na razie recznie wpisuje id sesji do zamkniecia (odczytane z konsoli)
namespace fbTest
{
public partial class Form1 : Form
{
Thread oThread;
loger log;
FbTrace trace = new FbTrace();
public Form1()
{
InitializeComponent();
log = new loger();
oThread = new Thread(new ThreadStart(log.startTrace));
}
private void button1_Click(object sender, EventArgs e)
{
log.logTraceApi();
oThread.Start();
}
private void button2_Click(object sender, EventArgs e)
{
log.stopTrace(Int32.Parse(textBox1.Text));
}
}
}
Klasa loger wyglada tak:
namespace fbTest
{
public class loger
{
FbTrace trace = new FbTrace();
public void stopTrace(int sID)
{
try
{
trace.Stop(sID);
}
catch (Exception eX)
{
MessageBox.Show(eX.ToString());
}
}
public void startTrace()
{
try
{
trace.Start("session1");
}
catch (Exception eX)
{
MessageBox.Show(eX.ToString());
}
}
public void logTraceApi()
{
try
{
trace.ConnectionString = "database=192.168.1.10:\"c:\\_test\\slave.fdb\";user=sysdba;password=masterkey;";
trace.ServiceOutput += (object tsender, ServiceOutputEventArgs t) =
{
Console.WriteLine(t.Message);
};
trace.DatabasesConfigurations.Add(
new FbDatabaseTraceConfiguration()
{
DatabaseName = string.Empty,
Enabled = true,
Events = FbDatabaseTraceEvents.StatementStart
});
}
catch (Exception eX)
{
MessageBox.Show(eX.ToString());
}
}
}
}
Niestety po nacisnieciu buttona odp. za zakonczenie aplikacja wisi. Jesli recznie zamkne sesjie fbsrvcmgr'em to "puszcza" twierdzac (i to slusznie) ze nie jest obiekt podpiety pod trace.start().
Prosilbym o pomoc w rozwiazaniu problemu.