我使用下面的代码访问我的表单上的属性,但今天我想把东西写入ListView,这需要更多的参数.
public string TextValue
{
set
{
if (this.Memo.InvokeRequired)
{
this.Invoke((MethodInvoker)delegate
{
this.Memo.Text += value + "\n";
});
}
else
{
this.Memo.Text += value + "\n";
}
}
}
Run Code Online (Sandbox Code Playgroud)
如何添加多个参数以及如何使用它们(值,值)?
如果我在我的代码中创建一个委托,如:
delegate void dostuff (string o);
Run Code Online (Sandbox Code Playgroud)
这产生派生从一个类System.MulticastDelegate,它实现三个方法- Invoke,BeginInvoke和EndInvoke.
如果我看一下所编译的IL,Invoke我看到的是:
.method public hidebysig newslot virtual
instance void Invoke(string o) runtime managed
{
} // end of method dostuff::Invoke
Run Code Online (Sandbox Code Playgroud)
该方法不包含代码.调用它确实有效 - 委托被调用,但我看不出它是如何做到的.
调用Invoke实际调用委托的伏都教来自哪里?
我有一个选项窗口和一个窗口,根据这些选项和Kinect数据显示颜色.到目前为止,一切都在一个线程上(据我所知;我没有做任何线程).
现在,我正在添加一个选项来打开一个需要以尽可能低的延迟进行更新的查看器窗口.所有这一切都需要创建一个窗口并显示它:
viewer = new SkeletalViewer.MainWindow();
viewer.Show();
Run Code Online (Sandbox Code Playgroud)
当此事件触发时,颜色窗口停止显示颜色(即主线程上每秒触发30次的事件停止触发),但查看器显示完美.我希望更新查看器和颜色窗口.
从阅读其他问题,听起来解决方案是在新线程上创建查看器.不过,我遇到了很多问题.
单击按钮打开查看器时会触发:
private void launchViewerThread_Click(object sender, RoutedEventArgs e)
{
Thread viewerThread = new Thread(delegate()
{
viewer = new SkeletalViewer.MainWindow();
viewer.Dispatcher.Invoke(new Action(delegate()
{
viewer.Show();
}));
});
viewerThread.SetApartmentState(ApartmentState.STA); // needs to be STA or throws exception
viewerThread.Start();
}
Run Code Online (Sandbox Code Playgroud)
无论我是否如上所述调用viewer.Show()或Invoke(),该行都会抛出异常:不能使用属于与其父Freezable不同的线程的DependencyObject.这是我理解Invoke()的方式:它访问查看器的调度程序,它知道运行该对象的线程,然后可以从该线程调用方法.
我应该尝试将此查看器放在新线程上吗?问题甚至是线程问题吗?用户不会与观看者交互.
任何人都知道为什么这不起作用?谢谢您的帮助.
PHP 5.4.5,这里.我正在尝试调用一个存储为其他对象成员的对象.像这样(非常粗略)
class A {
function __invoke () { ... }
}
class B {
private a = new A();
...
$this->a(); <-- runtime error here
}
Run Code Online (Sandbox Code Playgroud)
当然,这会产生运行时错误,因为没有名为a的方法.但如果我像这样写电话:
($this->a)();
Run Code Online (Sandbox Code Playgroud)
然后我得到一个语法错误.
当然,我可以写
$this->a->__invoke();
Run Code Online (Sandbox Code Playgroud)
但这似乎难以忍受,而且破坏了仿函数的重点.我只是想知道是否有更好的(或官方的)方式.
我有一个PowerShell脚本,它接受3个命名参数.请让我知道如何从命令行传递相同的内容.我尝试下面的代码,但同样不起作用.它仅将整个值分配给P3.我的要求是P1应该包含1,P2应该包含2,而P3应该包含3.
Invoke-Command -ComputerName server -FilePath "D:\test.ps1" -ArgumentList {-P1 1 -P2 2 -P3 3}
Run Code Online (Sandbox Code Playgroud)
以下是脚本文件代码.
Param (
[string]$P3,
[string]$P2,
[string]$P1
)
Write-Output "P1 Value :" $P1
Write-Output "P2 Value:" $P2
Write-Output "P3 Value :" $P3
Run Code Online (Sandbox Code Playgroud) 我有个问题.如何调用Web服务并从C#桌面应用程序获取结果.我正在制作一个桌面应用程序,我希望它能够连接到我的在线ASP.net Web服务.这怎么可能?
我遇到Windows窗体应用程序的问题.
必须从另一个线程显示表单.所以在表单类中,我有以下代码:
private delegate void DisplayDialogCallback();
public void DisplayDialog()
{
if (this.InvokeRequired)
{
this.Invoke(new DisplayDialogCallback(DisplayDialog));
}
else
{
this.ShowDialog();
}
}
Run Code Online (Sandbox Code Playgroud)
现在,每次我运行它时,InvalidOperationException都会抛出一条线this.ShowDialog();:
"跨线程操作无效:控制'SampleForm'从其创建的线程以外的线程访问."
这段代码有什么问题?这不是一种进行跨线程调用的有效方法吗?有什么特别的ShowDialog()吗?
我的代码如下所示:
class MyObject {
MyField f = new MyField();
}
class MyField {
public void greatMethod();
}
Run Code Online (Sandbox Code Playgroud)
有没有办法greatMethod()在类的对象上调用using反射MyObject?
我尝试了以下方法:
Field f = myObject.getClass().getDeclaredField("f");
Method myMethod = f.getDeclaringClass().getDeclaredMethod("greatMethod", new Class[]{});
myMethod.invoke(f);
Run Code Online (Sandbox Code Playgroud)
但是它试图greatMethod()直接调用我的myObject,而不是调用其中的字段f.有没有办法实现这一点,而无需修改MyObject类(因此它将实现一个在f上调用适当方法的方法).
我开始使用 Python Invoke
from invoke import task
@task
def build():
print("Building!")
Run Code Online (Sandbox Code Playgroud)
预期的产出是
$ invoke build
Building!
Run Code Online (Sandbox Code Playgroud)
但是,我的输出是
$ invoke build
Can't find any collection named 'tasks'!
Run Code Online (Sandbox Code Playgroud)
我不知道为什么.
令人惊奇的是,一旦我在virtualenv中调用,那么我可以在没有virtualenv的情况下构建.
> mkvirtualenv myenv
> invoke build
Building!
> deactivate myenv
> invoke build
Building!
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
应该不是的std ::调用是constexpr特别是在C++中17 constexpr lambda表达式?
是否有任何阻碍这种情况的障碍?
invoke ×10
c# ×5
winforms ×2
.net ×1
asp.net ×1
c++ ×1
c++17 ×1
command ×1
constexpr ×1
delegates ×1
desktop ×1
function ×1
functor ×1
java ×1
member ×1
methods ×1
named ×1
parameters ×1
php ×1
powershell ×1
pyinvoke ×1
python ×1
python-2.7 ×1
python-3.x ×1
reflection ×1
showdialog ×1
std ×1
web-services ×1