小编Tom*_*ght的帖子

哪个C#程序集包含Invoke?

替代问题:为什么VS10如此热衷于抱怨Invoke?

在我不断追求让我的应用程序成为世界上最好的C#程序员的过程中,我认为线程是一件好事.

MSDN有一篇关于对控件进行线程安全调用的有用文章,但它(以及看似关于该主题的所有其他文章)倾斜地引用了一个名为Invoke的方法.有时甚至是BeginInvoke,我读过的也是首选.

如果我能让visual studio识别Invoke,那么这一切都会很棒.MSDN说它包含在System.Windows.Forms程序集中,但我已经"使用"它了.可以肯定的是,我也尝试过使用System.Threading,但无济于事.

我需要通过哪些环节才能调用工作?

c# multithreading invoke visual-studio-2010

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

如何将指针从C#传递给非托管DLL?

我有一个非托管DLL,其函数将指针作为参数.如何从C#传递指针而不是"不安全"?

这是一些示例代码:

[DllImport(@"Bird.dll")]
private static extern bool foo(ushort *comport);
Run Code Online (Sandbox Code Playgroud)

标题中的相应条目:

BOOL DLLEXPORT foo(WORD *pwComport);
Run Code Online (Sandbox Code Playgroud)

当我尝试简单地取消引用它(&comport)时,我得到一个错误说:" 指针和固定大小的缓冲区只能在不安全的上下文中使用. "

我该如何解决这个问题?

c# pointers unsafe unmanaged dllimport

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

什么是“无效的托管/非托管类型组合”。意思?

我有以下结构:

    [StructLayout(LayoutKind.Auto,Pack=0)]
    private unsafe struct BIRDSYSTEMCONFIG
    {
        public byte bySystemStatus;
        public byte byError;
        public byte byNumDevices;
        public byte byNumServers;
        public byte byXmtrNum;
        public ushort wXtalSpeed;
        public double dMeasurementRate;
        public byte byChassisNum;
        public byte byNumChassisDevices;
        public byte byFirstDeviceNum;
        public ushort wSoftwareRev;
        public fixed byte byFlockStatus[127];
    }
Run Code Online (Sandbox Code Playgroud)

基于C ++结构:

typedef struct tagBIRDSYSTEMCONFIG
{
    BYTE    bySystemStatus;     // current system status (see bird system status bits, above)
    BYTE    byError;            // error code flagged by server or master bird
    BYTE    byNumDevices;       // number of devices …
Run Code Online (Sandbox Code Playgroud)

.net c# struct marshalling

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

如何使用CSS单独为IE和Firefox进行奇/偶着色?

我使用php作为我的web项目,但我需要单独的CSS这个着色补充.

因此,我需要在Firefox和Internet Explorer中运行的代码.

此代码已编写,但在Internet Explorer中不起作用:

.tbl_css col:nth-child(odd){      
}

.tbl_css col:nth-child(even){    
}
Run Code Online (Sandbox Code Playgroud)

css internet-explorer

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

更新PictureBox时可能导致ArgumentException的原因是什么?

我决定尝试AForge的视频和图像处理,我尝试实现这个简单的演示:

private void Main_Load(object sender, EventArgs e)
{
        // enumerate video devices
        FilterInfoCollection videoDevices = new FilterInfoCollection(
                        FilterCategory.VideoInputDevice);
        // create video source
        VideoCaptureDevice videoSource = new VideoCaptureDevice(
                        videoDevices[0].MonikerString);
        // set NewFrame event handler
        videoSource.NewFrame += new NewFrameEventHandler(video_NewFrame);
        // start the video source
        videoSource.Start();
}

private void video_NewFrame(object sender, NewFrameEventArgs eventArgs)
{
        this.pictureBox1.Image = eventArgs.Frame;
}
Run Code Online (Sandbox Code Playgroud)

问题是我总是得到一个ArgumentException,但并不总是马上发生.它弹出Application.Run(new Main());,但堆栈跟踪的顶部看起来像这样:

  • at System.Drawing.Image.get_Width() at System.Drawing.Image.get_Size()
  • at System.Windows.Forms.PictureBox.ImageRectangleFromSizeMode(PictureBoxSizeMode mode)
  • at System.Windows.Forms.PictureBox.OnPaint(PaintEventArgs pe)

不确定这是否相关,但ParamName异常的属性为null.我试过在try ... catch块中包装图像赋值,但这没有帮助.我还检查过以确保图像在分配之前不为空.我还检查了非null,但是0x0大小的图像. …

c# picturebox argumentexception aforge

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

为什么控件与我正在工作的控件不同?

我不是(故意)在我的C#应用​​程序中使用线程.事实上我的主要方法有一个[STAThread],我认为这意味着我只使用一个线程.

为什么然后,我会收到此错误消息?

跨线程操作无效:控制'messageLog'从其创建的线程以外的线程访问.

c# multithreading

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

无法更新mysql数据库的特定列

我无法更新数据库的特定列.在我的数据库中有一个"条件"列,其默认值为"pending".我想用值"accept"更新此列,但我无法这样做.

我的routes.php

Route::get('accept/{id}',array(
    'as'=>'accept-product',
    'uses'=>'GoodsController@updateProduct
));
Run Code Online (Sandbox Code Playgroud)

我的控制器:

public function updateProduct($id) 
{
    $product = Products::findOrFail($id);
    $product->conditions = 'accept';
    $product->save();
}
Run Code Online (Sandbox Code Playgroud)

我的看法:

@foreach($product as $productAccept)
    <a href="{{URL::route('accept-product')}}/{!! $productAccept->id !!}   ">Accept</a>
@endforeach
Run Code Online (Sandbox Code Playgroud)

当我点击"接受"按钮时,网址就是这样的

http://localhost/project/public/accept/{id}

我想要这样:

http://localhost/project/public/accept/7

我的意思是我无法取代{id}整数一样7,8

我的错了routes吗?

php mysql laravel

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

如何将二进制字符串转换为float或double?

在这个问题中,Bill The Lizard询问如何显示float或double的二进制表示.

我想知道的是,给定一个适当长度的二进制字符串,我怎样才能执行反向操作(在C#中)?换句话说,如何将二进制字符串转换为float或double?

作为旁注,是否有任何位串不会导致有效的浮点数或双倍?


编辑:二进制字符串我的意思是一个0和1的字符串.

所以,我的输入将是这样的字符串:

01010101010101010101010101010101
Run Code Online (Sandbox Code Playgroud)

我的输出应该是一个浮点数.(或者,如果字符串中有64位,则为double.)

c# floating-point binary double

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

限制属性接受的值范围的正确方法是什么?

我有一些带有一些公共属性的用户控件.特定属性是整数,但只能接受小于const最大值的正值.目前我做以下事情:

private int markerwidth = 2;
[DefaultValue(2), Category("Appearance"), Description("Size of position marker")]
public int MarkerWidth
{
    get
    {
        return this.markerwidth;
    }
    set
    {
        if (value > 0 && value <= MAXMARKERWIDTH)
        {
            this.markerwidth = value;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这样做可以完成工作,但是会无声地失败.我想我可以添加逻辑以将0用于负值,将最大值用于超过它的那些,但它仍然不理想.

相比之下,UserControl如果我尝试在设计时(并且可能在运行时)设置负值,则TabValue属性(继承自)会抱怨.

如果这是通过正常例外实现的?或者,还有更好的方法?一个属性可能吗?

c# attributes design-time properties visual-studio

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

包括签名中的异步(在身体中没有等待)对程序流有什么影响?

一般问题

我刚刚async在一个方法的签名中找到了一个奇怪的行为,因为缺少一个修饰符.有了它,我得到了预期的行为,但没有它,我的程序表现得很奇怪.

问题是,方法的主体是完全同步的:看不到一个await.我甚至(如预期的那样)获得编译器警告1998:

这种异步方法缺少"等待"运算符并将同步运行.考虑使用'await'运算符等待非阻塞API调用,或'await Task.Run(...)'在后台线程上执行CPU绑定工作.

那么诱惑就是将其删除.(我的意思是,编译器基本上告诉我!)当我删除它时,我开始可靠地获得意外行为.

我的问题是:当没有等待时,异步真的在做什么?


背景/细节

我不认为我的应用程序的具体细节与我渴望理解的基本解释有关,但我会在这里包含它以给出一些风味......

我正在开发的程序消耗来自服务总线的消息.我方法的签名是:

public async Task<BrokeredMessage> ProcessMessageAsync(BrokeredMessage inMessage) 
Run Code Online (Sandbox Code Playgroud)

历史背景:我最初是从同事编写的类似程序中借用的,方法名称(暗示异步操作)是接口实现的一部分.

我删除async修饰符时遇到的奇怪行为是方法的主体被执行,但是消息被返回为无法传递.这样做的一个有趣结果是我最终会为每次重试尝试处理消息.(我很幸运,这是一个很低的数字!)


更新

正如Skeet先生所指出的那样,重要的是,虽然签名承诺返回值类型Task,但我的方法实际上会返回null.

c# asynchronous async-await

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