问题标签 [method-invocation]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 了解调度程序队列
我想我需要一些帮助来理解Dispatcher Queue。
当新工作到达时,它会被添加到调度程序队列的开头,而当调度程序想要处理一个工作项时,它会从开头删除。
更一般地说:如果有工作,它会以先进先出的方式存储在队列中,只要没有工作就处理。
此处的 MSDN 文档指的是 aloop
和 a frame
:
The Dispatcher processes the work item queue in a loop. The loop is referred to as a frame.
但是在这种情况下,循环在哪里?对我来说,循环是对某些东西进行迭代的东西,当它到达终点时,它会重新开始。
a 的概念是frame
什么?根据 MSDN 文档,一个框架是队列中工作项的一拳?如果这是真的,应该如何使用静态方法Disptatcher.PushFrame()
?
最有趣的问题是是否有任何方法可以获取队列的当前状态,尤其是队列中有多少项。
如果之前调用的方法(并因此放入 Dispatcher 队列)被执行,然后立即从队列中删除,或者它是否持续在另一个时间段内,它是否成立?
我知道,有很多问题:-)
java - 如何暂停 Java 线程一小段时间,比如 100 纳秒?
我知道Thread.sleep()可以使 java 线程暂停一段时间,例如某些毫秒和某些纳秒。但问题是这个函数的调用也会导致开销。
例如,如果我想让一个线程挂起 100 纳秒,我调用Thread.sleep(0, 100)。这个过程的全部成本是invocation_cost + 100 nanosceonds,这可能比我想要的要大得多。我怎样才能避免这个问题,并达到我的目的?
我需要这个的原因是我想离线进行模拟。我分析了一个任务的执行时间;现在我想通过在同一时间段内挂起一个线程来模拟这个执行时间。
谢谢!
python - 通过实例调用方法失败
我有这个完全荒谬的错误,我已经完全放弃了。这是我的代码:
现在,当我去实现时......:
我收到此错误:
ruby - 如何将哈希项映射到方法参数?
我有一个方法,其中包含很长的可选参数列表,例如:
我认为调用该方法并将拆分哈希作为参数传递将通过将键与方法参数匹配来将哈希项映射到参数:
不幸的是,当我在使用拆分哈希调用方法后检查局部变量时,如果传入拆分数组,我得到的正是我所期望的,但这不是我所希望的:
我在这里缺少什么?
java - 需要从我的应用程序进行非阻塞/异步方法调用
可能重复:
如何以异步方式发出 Web 请求
我需要从我的应用程序进行非阻塞异步方法调用。
我需要以异步方式调用一个 http url。
例子:
但是要以非阻塞或异步方式调用的方法,以便在目标url(http://www.mypage.com)的服务器不工作时线程不会卡住。
使用 Oracle Weblogic Server 10.3.2
groovy - Groovy 运行时方法拦截
我在玩 Groovy,我想知道,为什么这段代码不起作用?
它打印出来No catch
,而我希望它打印出来Catch!
。
php - 动态调用类方法参数
我正在做一些事情,我需要能够将一个索引的 args 数组传递给一个方法,就像call_user_func_array
工作原理一样。我会使用call_user_func_array
,但它不是 OOP 方法,这是不受欢迎的,它要求方法是静态的,这会破坏目标类的 OO。
我曾尝试使用ReflectionClass
但无济于事。您不能调用类方法的参数,只能调用构造函数。不幸的是,这是不可取的。
因此,我查看了手册页并查看了ReflectionFunction
但没有办法实例化该类,将其指向一个方法,然后invokeArgs
使用它。
使用示例ReflectionFunction
(请记住,这个问题被标记为 PHP 5.4,因此语法):
这失败了:
使用示例ReflectionMethod
这失败了:
参数永远不会传递给方法。
期望的结果是:
如果我传递$array
给 的一个实例ExampleClass->exampleMethod()
,我将只有一个参数,即一个数组。相反,我需要能够提取单个参数。
我在想,如果有一种方法可以召唤我ReflectorFunction
,ReflectorClass
我会以船形和我的方式进入,但看起来这是不可能的。
有没有人有他们以前用来完成此任务的任何东西?
java - 一个 InvocationHandler 的多个接口
是否可以为具有不同接口的几个对象定义一个调用处理程序(代理)?
因为这个代理对对象所做的(所有检查等)是相同的(并且它们共享一个锁管理表,我更喜欢将它放在代理上的一个地方),
有没有办法做到这一点?
谢谢,阿里安
c# - 编写扩展方法来调用控件的更好方法?
我有这个通用函数来调用 WinForm 控件:
我正在考虑通过引入更严格的约束来防止无意义的事情变得更好,可能就像:
也可能有多余的打字,如:
因为我们已经指定了this
is button1
。
所以我做到了:
现在我得打电话了,
或者
现在我有点觉得即使这样也有一些超出要求的打字。如果我指定this
is button1
,那么在 lambda 表达式中我不想c
再次指定一个虚拟变量来告诉在哪里进行操作。无论如何我可以再次缩短这个时间吗?也许喜欢
或者
或者在 C# 中?
c# - 使用 Windbg 在内存转储中查找调用的目标线程
背景
客户报告 C# 应用程序出现挂起。在应用程序挂起时,我有一个内存转储。内存转储显示主 UI 线程显示进度表单和多个后台线程正在运行。后台线程之一正在尝试将 Control.Invoke 回主线程以更新表单。CLR 堆栈如下所示:
UI 线程处于模态循环并等待消息:
我验证了消息队列中唯一的消息(我可以看到)是绘制消息。消息 15 对应于 WM_PAINT:
我知道 Control.MarshaledInvoke 是作为已知消息的 PostMessage 实现的:
在与创建指定窗口的线程关联的消息队列中放置(发布)一条消息,并在不等待线程处理消息的情况下返回。
我怀疑这是后台线程访问已知会导致应用程序挂起的 UI 对象的经典案例。我很清楚这是一件坏事。
由于有多个后台线程,我想确定哪个后台线程搞砸了。
问题
是否可以使用内存转储中的信息来确定调用 Control.Invoke 的目标线程?
工作至今
我得到了后台线程的堆栈对象的转储:
我试过寻找 ThreadMethodEntry 和 Context 对象,但我不确定我在寻找什么:
或者也许有一种更原生的方法,涉及找到窗口句柄与特定线程的关联,但如果是这样,我不知道该怎么做。