我的课有问题。我试图通过将一些东西移到另一个类来清理我的代码。
目前我只使用静态方法,所以我不得不,例如。
如果我想使用 myMemoryStream
并使用它,我必须将它放入方法中:
Static Void WorkMS(MemoryStream ms){}
因此,我不必调用其他类的引用,而是该类调用方法。
但是,如果我想处理不能这样写的东西,例如:
void ListenRender(Thread ListenThread, Thread RenderThread, CancellationTokenSource CTSReceive)
{
CTSReceive = new CancellationTokenSource();
ListenThread = new Thread(() => CaptureClass.Listen(CTSReceive.Token));
ListenThread.Start();
RenderThread = new Thread(() => CaptureClass.Render(CTSReceive.Token));
RenderThread.Start();
}
它不起作用。
此方法位于名为 的类中FastMethods
。
CaptureClass
是另一个(我的主要)课程。
两者都是公开的,方法Listen/Render
也是公开的。
如果我看看CaptureClass
得到了什么CaptureClass.
,它不会显示任何变量、方法或任何东西,它只是显示看起来形式的东西,比如ActiveForm
,DefaultFont
...
如果重要的话,这CaptureClass
是一个带有 Form 的部分类。
我试过搜索它,但我找不到任何说你不能从部分类调用方法的东西,所以我看不出问题出在哪里。
编辑1:
一个简单的例子:
FastMethods
类有一个方法。
Static Void Method()
CaptureClass
然后可以使用FastMethods.Method
来调用它。
现在,CaptureClass
有一个方法。
Static Void CapMethod()
FastMethods
不能用 调用它CaptureClass.CapMethod
,因为它甚至不存在。
编辑 3:
它是否正确。
在CaptureClass
:
internal void Render(CancellationToken CTS)
{}
internal void Listen(CancellationToken CTS)
{}
在FastMethods
:
void ListenRender(Thread ListenThread, Thread RenderThread, CancellationTokenSource CTSReceive)
{
CaptureClass Cap = new CaptureClass();
CTSReceive = new CancellationTokenSource();
ListenThread = new Thread(() => Cap.Listen(CTSReceive.Token));
ListenThread.Start();
RenderThread = new Thread(() => Cap.Render(CTSReceive.Token));
RenderThread.Start();
}
当我称之为:
private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
FastMethods.ListenRender(ListenThread, RenderThread, CTSReceive);
}
或者有什么我应该改进的吗?