标签: dispatch

java事件队列事件调度刷新/陷阱事件

我有一个与设计相关的问题,我正试图找到答案.

这是场景.

假设您希望由于用户输入而做一些昂贵的(耗时的)(例如从某个数据库加载大量数据,读取大文件).强烈推荐的方法是在单独的线程中完成耗时的工作,永远不会阻止EDT,否则GUI将无法响应.

但是有些情况下,除非后台任务完成,否则不应向GUI提供输入.在我的特定情况下,只有在后台工作完成后,我才能确定哪些GUI元素应该可见并启用/禁用.只有那些应该可见和启用的GUI元素才应该响应用户输入,否则在我的特定情况下行为可能是不可预测的.

这就是我正在做的处理这种情况.

第1步:在我即将开始耗时的操作之前.

  1. 将光标更改为忙碌光标.
  2. 将鼠标侦听器添加到组件顶层框架的玻璃板上.
  3. 使玻璃板可见,以便它可以接收鼠标事件.由于鼠标输入,玻璃板不会做任何事情.

第2步:在后台线程中执行耗时的操作.后台线程有一个finally块,它在作业完成时通知事件线程(由于错误而完成或中止).

第3步:

  1. 将鼠标光标切换回正常状态.
  2. 从玻璃窗格中删除侦听器.
  3. 使玻璃板不可见,以便将鼠标事件发送给预期的收件人.

这是处理这种情况的正确方法吗?

你们推荐什么?

java events swing dispatch

3
推荐指数
1
解决办法
1323
查看次数

Magento:停止在pre_dispatch观察者中调度

我想影响产品渲染(传递$paramsMage_Catalog_Helper_Product_View::prepareAndRender())并在controller_action_predispatch_catalog_product_view事件上注册观察者.

渲染工作正常,但原始catalog/product/view操作仍然执行,因此显示两个产品.

如何在预派遣观察员期间停止调度?

php magento dispatch observer-pattern

3
推荐指数
1
解决办法
2797
查看次数

如何在XP上的.Net应用程序中调试AccessViolationException

我有一个.net应用程序,我使用为.Net 4.0编译的Visual Studio Express 2008在Windows 8.1计算机上开发

它在Windows 8.1机器上运行良好,但在(非常)旧的单核XP机器上它偶尔会抛出一个AccessViolationException,我无法弄清楚原因.

在调试模式下在Visual Studio中运行,我没有任何帮助.

该程序非常平行,我使用的是TPL.

事件日志显示了这一点(这对我来说没什么意义):

Stack:
    at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG ByRef)
    at System.Windows.Forms.Application+ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr, 
Int32, Int32)
    at System.Windows.Forms.Application+ThreadContext.RunMessageLoopInner(Int32, System.Windows.Forms.ApplicationContext)
    at System.Windows.Forms.Application+ThreadContext.RunMessageLoop(Int32, 
System.Windows.Forms.ApplicationContext)
    at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun()
    at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel()
    at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(System.String[]) 
Run Code Online (Sandbox Code Playgroud)

我正在使用的标准.net内容之外的唯一库是System.data.SQLiteNewtonsoft.JSON

该应用程序使用JSON访问RPC-Post API.

任何想法我的代码可能会导致这一点?就像我说它只发生在旧的XP机器上,但它可能是一个竞争条件我只看到因为它慢得多.我甚至不知道从哪里开始!

.net multithreading access-violation dispatch task-parallel-library

3
推荐指数
1
解决办法
593
查看次数

在defmethod中使用Common Lisp用户定义的类型

我希望能够使用已定义的类型作为参数特化器defmethod.动机是可读性和在后期更改的灵活性.像这样:

(deftype foo () 'fixnum)

(defmethod bar ((x foo)) ...)

(defmethod baz ((x foo)) ...)
Run Code Online (Sandbox Code Playgroud)

但这不起作用.CLtL2说"表单deftype不会创建任何类."

所以我要写:

(defmethod bar ((x fixnum)) ...)

(defmethod baz ((x fixnum)) ...)
Run Code Online (Sandbox Code Playgroud)

另一种方法是定义一个被调用的类foo,它只不过是一个包装器,fixnum但对于像这样简单的东西来说,这不是一个不可接受的开销fixnum吗?

有没有更好的办法?

methods common-lisp clos dispatch deftype

3
推荐指数
1
解决办法
643
查看次数

如何在C#中对MainThread调用的函数进行排队?

我已经找到了很多关于如何在UI线程上调用函数的资源,但我有一些逻辑只允许从主线程运行.有没有办法在主线程上获取调度程序并调用它?

c# multithreading dispatch

3
推荐指数
1
解决办法
150
查看次数

如何使用WSGI实现Flask应用程序调度?

我想将单个域用作多个烧瓶应用程序的临时环境,这些应用程序最终将在自己的域上运行.

就像是:

  • example_staging.com/app1
  • example_staging.com/app2
  • example_staging.com/app3

哪里:

  • example_staging.com/app1与app1.example_staging.com的行为相同
  • example_staging.com/app2与app2.example_staging.com的行为相同
  • example_staging.com/app3与app3.example_staging.com的行为相同

要么:

  • example_staging.com/app1与app1.com的行为相同
  • example_staging.com/app2与app2.com的行为相同
  • example_staging.com/app3与app3.com的行为相同

入门应用:

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello from Flask!'
Run Code Online (Sandbox Code Playgroud)

WSGI Starter配置文件:

import sys

project_home = u'/home/path/sample1'

if project_home not in sys.path:
    sys.path = [project_home] + sys.path

from app import app as application
Run Code Online (Sandbox Code Playgroud)

指的是:

http://flask.pocoo.org/docs/0.10/patterns/appdispatch/

我不知道在文档中给出的代码添加位置作为示例,以及create_app,default_app,get_user_for_prefix应该是什么样子.

注意:使用PythonAnywhere

Glenns输入后的WSGI配置文件:

import sys

# add your project directory to the sys.path
project_home = u'/home/path/app1'
if project_home not in sys.path:
    sys.path = [project_home] + sys.path …
Run Code Online (Sandbox Code Playgroud)

python wsgi path dispatch flask

3
推荐指数
2
解决办法
2824
查看次数

如何连接COM事件调度程序?

VBIDE API暴露了奇妙的神秘_dispVBComponentsEvents界面(以及其他界面),它看起来像我可以用来捕获VBE中的各种有趣事件.

所以我在一个类中实现了接口,该类打算捕获事件并为我的应用程序的其余部分引发"正常".net事件,如下所示:

public class VBComponentsEventDispatcher : _dispVBComponentsEvents
{
    public event EventHandler<DispatcherEventArgs<VBComponent>> ComponentAdded;
    public void ItemAdded(VBComponent VBComponent)
    {
        OnDispatch(ComponentAdded, VBComponent);
    }

    public event EventHandler<DispatcherEventArgs<VBComponent>> ComponentRemoved;
    public void ItemRemoved(VBComponent VBComponent)
    {
        OnDispatch(ComponentRemoved, VBComponent);
    }

    public event EventHandler<DispatcherRenamedEventArgs<VBComponent>> ComponentRenamed;
    public void ItemRenamed(VBComponent VBComponent, string OldName)
    {
        var handler = ComponentRenamed;
        if (handler != null)
        {
            handler.Invoke(this, new DispatcherRenamedEventArgs<VBComponent>(VBComponent, OldName));
        }
    }

    public event EventHandler<DispatcherEventArgs<VBComponent>> ComponentSelected;
    public void ItemSelected(VBComponent VBComponent)
    {
        OnDispatch(ComponentSelected, VBComponent);
    }

    public event EventHandler<DispatcherEventArgs<VBComponent>> ComponentActivated;
    public …
Run Code Online (Sandbox Code Playgroud)

c# com event-handling dispatch

3
推荐指数
1
解决办法
338
查看次数

用c ++快速实现简单,虚拟,观察者类型的模式?

我正在努力尝试使用枚举和大量的宏观魔法来实现vtable的替代品,这种魔法真的开始让我的大脑混乱.我开始认为我没有走正确的道路,因为代码变得更加丑陋和丑陋,并且无论如何都不适合生产.

如何使用最少量的重定向/操作实现以下代码的模式?

它必须在标准的c ++中完成,最多17个.

class A{
    virtual void Update() = 0; // A is so pure *¬*
};

class B: public A
{
    override void Update() final
    {
        // DO B STUFF
    }
}

class C: public A
{
    override void Update() final
    {
        // DO C STUFF
    }
}

// class...

int main()
{
    std::vector<A*> vecA{};

    // Insert instances of B, C, ..., into vecA

    for(auto a: vecA) // This for will be inside a main loop
        a->Update(); // …
Run Code Online (Sandbox Code Playgroud)

c++ enums virtual-functions micro-optimization dispatch

3
推荐指数
1
解决办法
357
查看次数

为什么在尝试使用动态参数调用扩展方法时出现错误CS1973

请考虑以下代码:

internal static class Program
{
    public static string ExtensionMethod(this string format, dynamic args)
    {
        return format + args.ToString();
    }

    private static void Main()
    {
        string test = "hello ";
        dynamic d = new { World = "world" };

        // Error CS1973  'string' has no applicable method named 'ExtensionMethod'
        //                but appears to have an extension method by that name. 
        //               Extension methods cannot be dynamically dispatched. 
        //               Consider casting the dynamic arguments or calling
        //               the extension method without …
Run Code Online (Sandbox Code Playgroud)

c# extension-methods dynamic dispatch

3
推荐指数
1
解决办法
473
查看次数

约束multis及其用于选择它们

约束显然不用于选择一个 multi

multi sub cuenta( Str $str ) { say $str };
multi sub cuenta( $file where .IO.e ) { say $file.IO.slurp };
cuenta( $*PROGRAM-NAME ); # Outputs the file name
Run Code Online (Sandbox Code Playgroud)

这意味着它使用的是第一个,而不是第二个.但是,这可以按预期工作:

subset real-files of Str where .IO.e;
multi sub cuenta( Str $str ) { say $str };
multi sub cuenta( real-files $file ) { say $file.IO.slurp };
cuenta( $*PROGRAM-NAME );
Run Code Online (Sandbox Code Playgroud)

打印程序本身的内容.这可能说明了类型检查和多调度,但我不确定它是设计还是只是一个怪癖.任何的想法?

perl6 dispatch

3
推荐指数
1
解决办法
59
查看次数