【发布时间】:2018-12-17 21:53:09
【问题描述】:
我目前第一次需要将我的应用程序重写到库中。到目前为止我已经成功了,但是我需要以某种方式进行自动重复过程,这可以通过简单的 camShield.start() 来启动。
但我无法从任何地方引用启用。这里的想法是我将使用计时器启动线程,这将检查启用的变量。但要做到这一点,我需要另一个函数,比如 stop(),它将启用的变量设置为 false。
有没有更好的方法来实现这样的功能?
---编辑----
我需要编写函数 CamShield.start() 和 CamShield.stop(),它们将能够访问 CamShield.enabled 变量。
这是我正在尝试解决的部分代码(它是类库)
using SharpAdbClient;
using System;
using System.Diagnostics;
using System.Threading;
namespace BaReader
{
public class Private
{
public class CamShield
{
internal bool enabled = true;
public static void start()
{
new Thread(() =>
{
Thread.CurrentThread.IsBackground = true;
Timer camShieldTimer = new Timer(tap, null, 0, 20000);
}).Start();
}
}
internal static void tap(Object o)
{
AdbClient.Instance.ExecuteRemoteCommand("input tap 600 900", Device.lookup(), null);
Debug.WriteLine("Tapped");
}
}
}
提前感谢您的任何想法。
【问题讨论】:
-
无法理解您面临的问题,您能否更清楚地说明您正在尝试做什么,或者您面临什么错误?这将提高获得解决方案的机会。
-
internal表示可以从库中访问该变量。如果您想从图书馆外访问,请将其公开。 -
要注意的是,我不知道如何在同一个类中编写函数 .start() 和 .stop(),因为当我在 Private 类或 CamShield 中创建这些函数时,我无法从 CamShield.start() 和 CamShield.stop() 访问 CamShield.enabled
-
不要使用静态方法。
-
这对我有什么帮助?即使 start() 不是静态的,我也无法从其中访问启用的变量。
标签: c# class variables static-libraries