问题列表 - 第12149页

ManagedThreadID与操作系统ThreadID之间的关系

我正在研究一个多线程的C#Windows应用程序,它经常调用本机dll.阻塞调用有时会持续很长时间.

在某些情况下,我想在主线程的某些工作线程上取消这些阻塞调用我正在使用的本机API为此提供了一个函数:

HRESULT CancelBlockingCall(DWORD ThreadID)
Run Code Online (Sandbox Code Playgroud)

尽管CancelBlockingCall()的文档并不十分清楚,但我相信我需要为操作系统级别的线程传递ThreadID.基于我从CancelBlockingCall()得到的返回码,我意识到Thread.ManagedThreadID不是我需要的.我在msdn上找到了以下内容(参见注释):

操作系统ThreadId与托管线程没有固定的关系,因为非托管主机可以控制托管和非托管线程之间的关系.具体而言,复杂的主机可以使用CLR Hosting API针对同一操作系统线程调度许多托管线程,或者在不同操作系统线程之间移动托管线程.

这是否意味着我无法为托管线程正确调用CancelBlockingCall()?是否无法确定托管线程当前正在执行的OS级线程的ThreadId?

.net c# windows multithreading

7
推荐指数
2
解决办法
4946
查看次数

如何在当前shell中执行命令的输出?

我很清楚source(又名.)实用程序,它将从文件中获取内容并在当前shell中执行它们.

现在,我正在将一些文本转换为shell命令,然后运行它们,如下所示:

$ ls | sed ... | sh
Run Code Online (Sandbox Code Playgroud)

ls只是一个随机的例子,原始文本可以是任何东西.sed也是一个转换文本的例子.有趣的是sh.我管道我得到的任何东西sh,它运行它.

我的问题是,这意味着启动一个新的子shell.我宁愿让命令在我当前的shell中运行.就像我能够做的那样source some-file,如果我在文本文件中有命令.

我不想创建临时文件因为感觉很脏.

或者,我想以与当前shell完全相同的特性启动我的子shell.

更新

好吧,使用反引号的解决方案当然有效,但我经常需要在检查和更改输出时这样做,所以我更喜欢是否有办法将结果输入到最后.

悲伤的更新

啊,/dev/stdin事情看起来很漂亮,但是,在一个更复杂的情况下,它没有用.

所以,我有这个:

find . -type f -iname '*.doc' | ack -v '\.doc$' | perl -pe 's/^((.*)\.doc)$/git mv -f $1 $2.doc/i' | source /dev/stdin
Run Code Online (Sandbox Code Playgroud)

这确保所有.doc文件的扩展名都是小写的.

顺便说一下,可以处理xargs,但除此之外.

find . -type f -iname '*.doc' | ack -v '\.doc$' | perl -pe 's/^((.*)\.doc)$/$1 $2.doc/i' | xargs -L1 git …
Run Code Online (Sandbox Code Playgroud)

unix bash shell pipe

77
推荐指数
6
解决办法
7万
查看次数

如何将元素移动到另一个元素?

我想将一个DIV元素移到另一个元素中.例如,我想移动它(包括所有孩子):

<div id="source">
...
</div>
Run Code Online (Sandbox Code Playgroud)

进入这个:

<div id="destination">
...
</div>
Run Code Online (Sandbox Code Playgroud)

所以我有这个:

<div id="destination">
  <div id="source">
    ...
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

html javascript jquery

1611
推荐指数
14
解决办法
105万
查看次数

在PHP中创建`no-variable` if子句

你如何制作if -clause哪个do this and thisif

  1. PHP中的URL没有变量?
  2. 没有变量哪个在PHP中有价值?

对于#1的if -clause应该为true的URL示例:

www.example.com/index.php
example.com/index.php
example.com/index.php?
Run Code Online (Sandbox Code Playgroud)

对于#2的if -clause应该为true的URL的示例:

example.com/index.php?successful_registration
example.com/index.php?successful_login
Run Code Online (Sandbox Code Playgroud)

以下是我失败的if -clause $ 1

if (isset($_REQUEST[''])) {
      // do this
}
Run Code Online (Sandbox Code Playgroud)

php url if-statement

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

前向声明问题

我在向前工作申报时遇到了问题(实际上我不确定它是否应该以我想要的方式工作).

我有一个cpp文件如下:

int DialogModeless::Create(int dialogID, Presenter* pPresenter)
{
    Ptrs* pPtrs = new Ptrs;
    pPtrs->pPresenter = pPresenter;
    pPtrs->pWnd = _derived;
    HINSTANCE hInstance = ::GetModuleHandle(NULL);
    _hWnd = ::CreateDialogParam(hInstance, MAKEINTRESOURCE(dialogID), NULL, &Presenter::StatDlgProc,
        reinterpret_cast<LPARAM>(pPtrs));
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

现在我的方式是Presenter :: StatDlgProc只需要在这一点上声明,因为我只是取其地址.这似乎不是这种情况,因为我从Visual Studio 2008收到以下错误:

错误C2027:使用未定义类型'Presenter'

我必须包含Presenter.h才能编译代码.

任何人都可以向我解释这个吗?

我试图转发声明如下:

class Presenter;
BOOL CALLBACK Presenter::StatDlgProc(HWND, UINT, WPARAM, LPARAM);
Run Code Online (Sandbox Code Playgroud)

c++ windows winapi

0
推荐指数
1
解决办法
532
查看次数

如何从C方法调用Objective-C方法?

我有一个Obj-C对象,里面有一堆方法.有时一个方法需要在同一个对象中调用另一个方法.我似乎无法弄清楚如何使用C方法调用Obj-C方法...

工作:调用Obj-C方法的Obj-C方法:

[self objCMethod];
Run Code Online (Sandbox Code Playgroud)

工作:调用C方法的Obj-C方法:

cMethod();
Run Code Online (Sandbox Code Playgroud)

不工作:调用Obj-C方法的C方法:

[self objCMethod];     // <--- this does not work
Run Code Online (Sandbox Code Playgroud)

最后一个示例导致编译器吐出此错误:

错误:'self'未声明(首次使用此功能)

两个问题.为什么C函数看不到"自"变量,即使它在"自"对象内部,如何在不引起错误的情况下调用它?非常感谢任何帮助!:)

objective-c self

38
推荐指数
4
解决办法
2万
查看次数

在MS Access中,是否可以执行多个查询?

我正在尝试执行如下语句:

UPDATE table1 SET name="Joe" WHERE id='1'; UPDATE table2 SET name="Bob" WHERE id='2'

但是,在执行查询时,我得到:

Microsoft JET数据库引擎错误'80040e14'在SQL语句结束后找到的字符.

但是,当我单独执行语句时,它可以工作.

所以我猜在使用Microsoft Access/JET数据库引擎时,绝对没有办法在单个SQL语句中执行多个查询?

database jet

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

DataBinding到只读属性

是否可以将字段(文本框)绑定到未实现集合的Property?

例如,我有一个实现带有3个字段的INotifyPropertyChanged的对象:

public decimal SubTotal
{
    get { return this.subTotal; }
    set 
    {
        this.subTotal = value;
        this.NotifyPropertyChanged("SubTotal");
        this.NotifyPropertyChanged("Tax");
        this.NotifyPropertyChanged("Total");
    }
}

public decimal Tax 
{
    get { return this.taxCalculator.Calculate(this.SubTotal, this.Region); }
}

public decimal Total
{
    get { return this.SubTotal + this.Tax; }
}
Run Code Online (Sandbox Code Playgroud)

我还没有完全测试这个,因为没有制作UI,并且在它运行之前还有很多其他工作需要在这个类中完成,但是这可能是我拥有它的方式,还是有不同的方式?

c# data-binding properties inotifypropertychanged winforms

4
推荐指数
1
解决办法
5109
查看次数

尝试将重复项添加到集合时应该抛出什么异常类型?

以下代码应抛出异常以防止添加重复的集合项.

ICollection<T> collection = new List<T>();

public void Add(T item)
{
    if (collection.Contain(item))
    {
          throw new SomeExceptionType()
    }

    collection.Add(item);
}
Run Code Online (Sandbox Code Playgroud)

什么标准异常类型最合适?

.net c# exception duplicates

26
推荐指数
4
解决办法
2万
查看次数

在C#托管DirectX中制作自定义网格

我需要在运行时使用C#中的Managed DirectX 制作DirectX 3D网格.我无法找到有关如何执行此操作的任何信息.

  1. 不,我不能使用3D建模程序来制作我的对象.它们必须精确地确定尺寸和形状,并且在运行之前我没有任何尺寸或形状信息.
  2. 不,我无法从现有的DirectX网格功能构建模型.(一个简单的例子:DirectX的将让你轻松使用锥网和气缸网铅笔模型的过程中,你必须携带两个网格为你的铅笔,不只是一个,并正确定位和定向每个但你.甚至不能将铅笔的模型纵向分成两半,因为没有提供半圆柱或半锥形网格.)
  3. 在运行时,我已经计算了所有顶点并知道要连接哪些顶点以生成必要的三角形.
  4. 我需要的只是一种纯色.我不需要纹理贴图.

可以使用此DirectX调用获取球体
Mesh sphere = Mesh.Sphere(device, sphereRadius, sphereSlices, sphereStacks);
网格:此网格是在运行时构建的.

我需要知道的是如何制作类似的功能:
Mesh shape = MakeCustomMesh(device, vertexlist, trianglelist);
两个列表可以是任何合适的容器/格式.

如果有人能指出我管理的DirectX(C#)示例代码,即使它只是从3个硬编码三角形构建网格,这将是一个很大的好处.

c# directx runtime managed mesh

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