小编Luk*_*kas的帖子

将C++结构编组到C#

我在非托管C++中有这么简单的结构:

struct Cam
{
    char ip[16];
    char login[16];
    char pass[16];
    char name[16];
};
Run Code Online (Sandbox Code Playgroud)

和C#编组结构:

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
public struct Cam
{
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
    public string ip;
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
    public string login;
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
    public string pass;
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
    public string name;
}
Run Code Online (Sandbox Code Playgroud)

当我通过函数将C#struct传递给C++ lib时

[DllImport("NVRLib.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern void AddCameraStruct(Cam cam);
...
Cam cam = new Cam();
cam.ip = "192.168.0.232";
cam.login = "admin";
cam.pass = …
Run Code Online (Sandbox Code Playgroud)

c# c++

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

Postgresql 与实体框架 6(数据库优先方法)

EF6是否可以与数据库一起使用Postgresql但使用数据库优先方法?我发现一些解决方案需要根据数据库结构手动编写 C# 类,这对我来说并不令人满意。我想像这样使用它Sql server,所以我从列表中选择服务器和数据库,然后选择我想要使用的表并voil\xc3\xa0

\n\n

我所做的是安装npgsql. 我可以在服务器资源管理器选项卡中添加此数据库,但是当我想创建ADO.NET实体模型时,我在列表中找不到此数据库。

\n

c# mysql database postgresql entity-framework-6

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

Rx - 在新线程上消耗每个项目

假设我有这样的代码:

static void Main(string[] args)
    {
        var scheduler = NewThreadScheduler.Default;
        var enumerable = Enumerable.Range(0, 100);

        enumerable
            .ToObservable(scheduler)
            .SubscribeOn(scheduler)
            .Subscribe(item =>
            {
                Console.WriteLine("Consuming {0} on Thread: {1}", item, Thread.CurrentThread.ManagedThreadId);

                // simulate long running operation
                Thread.Sleep(1000);
            });

        Console.ReadKey();
    }
Run Code Online (Sandbox Code Playgroud)

正如您一样,我将 IEnumerable 转换为 IObservable。然后我想在新线程上使用每个项目,所以我使用了 SubsribeOn(scheduler)。不幸的是,每次迭代都在同一个线程上工作,因此下一次迭代会阻塞。

结果是:

Consuming 0 on Thread: 4
Consuming 1 on Thread: 4
Consuming 2 on Thread: 4
Consuming 3 on Thread: 4
Consuming 4 on Thread: 4
....
Run Code Online (Sandbox Code Playgroud)

是否有可能强制这种行为?

c# multithreading system.reactive

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

Contextmenu - 禁用右键单击以打开它

我有这样的xaml代码:

<Grid x:Name="boardGrid">
    <Grid.ContextMenu>
        <ContextMenu Opacity="0.7" x:Name="menuContext">

        </ContextMenu>
    </Grid.ContextMenu>
</Grid>
Run Code Online (Sandbox Code Playgroud)

我在后面的代码中生成网格项.我想要的是右键单击禁用上下文菜单打开.我想在确定条件发生时打开它.

这就是我在.cs文件中的内容:

  • 生成Unit的对象并将它们放入Grid中;

每个对象都有unit.MouseRightButtonUp + = unit_MouseRightButton

void unit_MouseRightButtonUp(object sender, MouseButtonEventArgs e)
{
    if (CurrentGame.CurrentPlayer.HasTurn == false) return; 
    .....
    ContextMenu.IsOpen = true;

}
Run Code Online (Sandbox Code Playgroud)

所以这意味着只有条件得到满足才能打开Contextmenu,但无论如何它都会打开.

c# wpf xaml contextmenu

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

Rx - 暂停Observable.Interval

我正在替换rx的Observable.Interval上的计时器,我遇到了一个问题.我不知道如何暂停这样的计时器.我不是指暂停订阅,而是暂停和恢复计时.我知道如何以肮脏的方式做到这一点,但我想知道更好的解决方案.

我目前的代码:

var RemainingTimes = Observable
            .Interval(TimeSpan.FromMilliseconds(refreshInterval))
            .Select(t => _provider.Duration - TimeSpan.FromMilliseconds(t * refreshInterval))
Run Code Online (Sandbox Code Playgroud)

c# system.reactive observable

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

绑定到静态类的静态列表

我有静态类,当前的交易信息如下:

public static class BKM 
{
   public static List<Ticket> Tickets {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

我想绑定到XAML中的Tickets.Count属性.

当我输入这样的东西

<TextBlock Text="{Binding Source={x:Static p:BKM.Tickets.Count}}" />
Run Code Online (Sandbox Code Playgroud)

其中p是

xmlns:p="clr-namespace:TicketApplication"
Run Code Online (Sandbox Code Playgroud)

我收到错误

错误22不支持嵌套类型:BKM.Tickets.
错误21找不到类型'BKM.Tickets'.请注意,类型名称区分大小写.
错误23无法在目标类型上找到成员"计数".

c# wpf binding list

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