- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我按顺序调用了以下两个方法(按顺序使用适当的类级别字段)
public const string ProcessName = "This is"
public const string WindowTitle = "somewhat proprietary."
public Application App { get; set; }
public void Launch()
{
var theProcess = Process.GetProcesses().First(p => p.ProcessName.Contains(ProcessName))
App = Application.Attach(theProcess);
}
public void Select()
{
var window = App.GetWindow(WindowTitle);
var textBox = window.Get<TextBox>();
//etc, do more stuff in the window
}
当我运行它时,对 App.GetWindow()
的调用需要很长时间。好像超过一分钟。应用程序和窗口都已打开并正在运行。
我尝试过重载 GetWindow()
并尝试调用 Application.GetWindows()
和 Application.Find()
,但结果相同。
有没有人对我如何减少这段时间有任何想法,或者至少指出是什么花了这么长时间?无论如何,我都没有与我拥有的实现结婚 - 无论让我得到那个窗口对象对我来说都很好。
更新:
为了解决目前的评论,我修改了代码以尝试消除尽可能多的其他问题。
public void Select()
{
var processes = Process.GetProcesses().ToList();
var process = processes.First(p => p.ProcessName.ToLower().Contains("notepad"));
App = Application.Attach(process);
var window = App.GetWindow("Untitled - Notepad");
}
我加入了可枚举评估以消除任何延迟执行。而且,我用我的应用程序和记事本都试过了。上面的代码,对于我的应用程序和记事本,在调试器中立即执行前 3 行,然后在这两种情况下在最后一行上花费过多的时间。
(White 似乎有可能在内部推迟执行 Application.Attach
,但我对这个工具了解不多,所以这对我来说非常不透明。)
第二次更新:
下面是 GetWindow() 方法所用时间的明细。该应用程序在 GetWindow() 中花费了大约 10% 的时间,因此超过一半的时间花在了 WaitTillFound() 中,几乎所有时间都花在了 Retry() 方法中。关于如何减少该时间(或减少找到后在 Window 构造函数中花费的时间)的任何想法?
最佳答案
不清楚在等待之后是否真的找到了目标窗口。如果是 - 那确实是非常奇怪的行为。总之,当您调用 GetWindow 时,White 会尝试在一段时间内找到该窗口,默认为 30 秒(间隔为 200 毫秒)。所以很可能这就是你所经历的 - 白色出于某种原因找不到你的目标窗口。您可以通过以下方式配置此超时:
TestStack.White.Configuration.CoreAppXmlConfiguration.Instance.FindWindowTimeout = 0;
如果为 0,如果找不到窗口,它将立即失败。您还可以使用其他小于 30 秒的值。
关于c# - Application.GetWindow() *非常*慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36065302/
它们有什么区别?据我所知,他们都做同样的事情。 最佳答案 如果你去资源,你会发现PhoneWindow.class实现了 Window.setBackgroundDrawable 方法: @Overr
编辑:在形成这个问题时,我没有注意到目标窗口是模态窗口,所以我尝试的方法是错误的。我应该一直使用 GetModal,而不是 GetWindow。留在这里作为 future 旅行者的潜在引用 我正在尝试
JSObject.equals 的文档说: Determines if two JSObject objects refer to the same instance. 相反,以下表达式的计算结果为
这可能是一个愚蠢的问题,但我有以下情况:我想在每次打开应用程序时设置窗口布局,例如更改状态栏颜色。所以我创建了我的应用程序文件,因为我听说如果您在应用程序文件中而不是在 MainActivity 中检
我已经为 ics 创建了一个锁屏,它将取代默认的锁屏。在我的代码中,我想使用 getWindow() 方法来设置 "android:hardwareAccelerated" true 以提高效率。 我
我正在尝试一些 Java/JavaScript 编码,但似乎遇到了困难。我试图将参数从 Java 传递到 JavaScript,但无论我做什么“JSObject jso = JSObject.getW
来自How to reference primaryStage我了解到,我可以使用 control.getScene.getWindow() 获取特定控件的 Stage,但这会返回一个 Window
我明白 TypeError: this.getWindow(...).$ is undefined 当我使用CKEDITOR.instances['pageContent'].getData();使用
下面一行代码中的getWindow()方法 this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_
在source for jQuery's offset() ,为什么不能直接用window呢? 最佳答案 以防元素实际上不在 window 上。例如,它可能位于 iFrame 或弹出窗口中。 关于ja
我看过以下帖子 How to keep background image size when software keyboard show Software keyboard resizes back
在我的 Android 项目中,我希望只有一个 fragment 的 softInputMode 为 adjustPan。 将以下行添加到我的 list (在 Activity 内)按预期工作: an
我正在尝试绘制一些颜色介绍对话框,我有几个按钮(用于选择颜色)和一个 CStatic 控制我将使用哪个窗口来绘制所选颜色它。但是,当我调用 m_myStatic.GetWindow( NULL ) 时
public class AircraftFragmentTab extends Fragment{ private String ac; public Aircr
我无法解决 getWindow();出于某种原因的方法... import java.applet.Applet; import netscape.javascript.JSObject; publi
我有一些Android应用程序的类文件,我有代码 protected void onCreate(Bundle bundle) { super.onCreate(bundle);
我正在尝试获取 Android 中的屏幕亮度。 场景是这样的:A 类调用 B 类的函数: A类: if(condition is true){ ClassB.function(); } B类: f
我按顺序调用了以下两个方法(按顺序使用适当的类级别字段) public const string ProcessName = "This is" public const string WindowT
我需要检查是否已在 ActionBarCompat 实例上设置叠加功能。 getWindow().hasFeature() 方法仅适用于 API 11 及更高版本。 如何检查 API = 11) {
我创建了一个完全适合设备显示的背景图像,没有状态栏和操作栏。这意味着我的设备的整个高度是 1280 像素。没有状态栏和操作栏它是 1038 像素。我的背景图片正好是 1038 像素高。当我将图像设置为
我是一名优秀的程序员,十分优秀!