C# 如何判断我的方法是否由与主UI线程不同的线程调用?

C# 如何判断我的方法是否由与主UI线程不同的线程调用?,c#,.net,sqlite,C#,.net,Sqlite,我将自己创建的数据访问类(DAL)传递到另一个类中,以便它可以使用这些数据访问方法将数据存储到sqlite数据库中 这是类型安全的,因为访问数据库的每个方法都会创建自己的连接对象,因此对连接对象的调用总是来自创建它的同一线程 我只想在我的DAL类中使用一个连接(或一个连接对象池),如果对我的DAL的所有调用都来自主UI线程,这将很好地工作 if (!mainForm.InvokeRequired) { // running on the UI thread } else { //

我将自己创建的数据访问类(DAL)传递到另一个类中,以便它可以使用这些数据访问方法将数据存储到sqlite数据库中

这是类型安全的,因为访问数据库的每个方法都会创建自己的连接对象,因此对连接对象的调用总是来自创建它的同一线程

我只想在我的DAL类中使用一个连接(或一个连接对象池),如果对我的DAL的所有调用都来自主UI线程,这将很好地工作

if (!mainForm.InvokeRequired)
{
    // running on the UI thread
}
else
{
    // running on a different thread
}
当从主线程调用我的DAL类时,有没有一种方法可以使用一个连接对象(或它们的池),但如果从后台线程调用,则使用另一个连接对象?

您可以调用任何WinForms派生的类型来确定您是否在主线程上。如果返回
true
,则您不在主UI线程上

if (!mainForm.InvokeRequired)
{
    // running on the UI thread
}
else
{
    // running on a different thread
}
如果您使用的是WPF,那么可以调用其中一个UI元素的属性。如果返回true,则它是主UI线程。

您可以调用任何WinForms派生类型来确定您是否在主线程上。如果返回
true
,则您不在主UI线程上

if (!mainForm.InvokeRequired)
{
    // running on the UI thread
}
else
{
    // running on a different thread
}
如果您使用的是WPF,那么可以调用其中一个UI元素的属性。如果返回true,则它是主UI线程

if (!mainForm.InvokeRequired)
{
    // running on the UI thread
}
else
{
    // running on a different thread
}
(您可以使用任何控件而不是
mainForm


(您可以使用任何控件而不是
mainForm

我的DAL对象很方便地继承了一个插件,它也是一个控件。谢谢很容易,我的DAL对象继承自一个插件,该插件也是一个控件。谢谢