小编dsf*_*sho的帖子

关闭客户端时SignalR Websocket异常

启动和停止连接到基本自托管服务器的SignalR客户端时,如下所示:

async public void Start(string url)
{
    _connection = new HubConnection(url);
    _proxy = _connection.CreateHubProxy("hubname");
    await _connection.Start().ContinueWith((task) => IsRunning = true);
}
public void Stop()
{
    _connection.Stop();
}
Run Code Online (Sandbox Code Playgroud)

调用"Stop"方法(包括跟踪消息)时,我收到以下异常:

SignalR.Transports.TransportHeartBeat Verbose: 0 : KeepAlive(c75fe282-a86d-406a-935b-5981b47bd472)
SignalR.Transports.TransportHeartBeat Information: 0 : Connection 1bdabc19-e0a7-4649-aabb-bade071ad6d0 is New.
SignalR.Transports.WebSocketTransport Information: 0 : Abort(1bdabc19-e0a7-4649-aabb-bade071ad6d0)
SignalR.Transports.TransportHeartBeat Information: 0 : Removing connection 1bdabc19-e0a7-4649-aabb-bade071ad6d0
SignalR.Transports.WebSocketTransport Information: 0 : End(1bdabc19-e0a7-4649-aabb-bade071ad6d0)
SignalR.Transports.WebSocketTransport Verbose: 0 : DrainWrites(1bdabc19-e0a7-4649-aabb-bade071ad6d0)
SignalR.Transports.WebSocketTransport Information: 0 : CloseSocket(1bdabc19-e0a7-4649-aabb-bade071ad6d0)
App.vshost.exe Error: 0 : Error while closing the websocket: System.Net.WebSockets.WebSocketException (0x80004005): An …
Run Code Online (Sandbox Code Playgroud)

c# sockets signalr.client owin signalr-2

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

MonoMac System.Drawing.Image.GetPropertyItem(0x5100)

最近,我试图回答关于加载动画的帧(位图和持续时间)的另一个问题GIFs.代码可以在pastenbin找到.

在将此代码移入我的开发库之前对此代码进行其他测试时,我注意到这行代码存在问题:

//Get the times stored in the gif
//PropertyTagFrameDelay ((PROPID) 0x5100) comes from gdiplusimaging.h
//More info on http://msdn.microsoft.com/en-us/library/windows/desktop/ms534416(v=vs.85).aspx
var times = img.GetPropertyItem(0x5100).Value;
Run Code Online (Sandbox Code Playgroud)

当使用此(例如GIF)在Windows .Net上运行此数组时,该数组的大小与动画中的帧数相同,GIF并填充帧的持续时间.在这种情况下,一个字节[20]转换为(BitConverter.ToInt32())5个持续时间:

[75,0,0,0,125,0,0,0,125,0,0,0,125,0,0,0,250,0,0,0]
Run Code Online (Sandbox Code Playgroud)

但是,在MonoMac上,同一个示例GIF的这行代码返回一个byte[4]只转换为一个持续时间(第一个)的代码:

[75,0,0,0]
Run Code Online (Sandbox Code Playgroud)

我测试了10个不同GIF's的结果,结果总是一样的.在Windows上,所有持续时间都在byte []中,而MonoMac仅列出第一个持续时间:

[x,0,0,0]
[75,0,0,0]
[50,0,0,0]
[125,0,0,0]
Run Code Online (Sandbox Code Playgroud)

查看Mono System.Drawing.Image 源代码,似乎在此方法中设置了长度,这是一个GDI包装器:

status = GDIPlus.GdipGetPropertyItemSize (nativeObject, propid,out propSize);
Run Code Online (Sandbox Code Playgroud)

但是,我没有看到任何问题,不像我的实现那样使用源代码.我错过了什么或这是一个错误吗?

c# mono system.drawing gdi image

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

WPF玻璃窗口没有边框,没有重新调整焦点

我正在尝试使用该方法创建一个Aero玻璃无边框不可调整大小的 WPF窗口.但是,由于某些奇怪的原因,此窗口的玻璃颜色看起来好像窗口没有焦点.正如您在接下来的三张图片中看到的那样,带有边框的正常窗口(例如图1和图2)工作得很好并且按预期做出反应(焦点为深蓝色,失焦时为白色(=非活动)).DwmEnableBlurBehindWindowDmwAPI

使用ToolWindow的DwmEnableBlurBehindWindow DwmEnableBlurBehindWindow与ToolWindow失焦

允许调整大小的无边框窗口显示相同的行为:

DwmEnableBlurBehindWindow具有无边框但可调整大小的窗口

然而,不可调整大小的无边界窗口在它处于活动状态和非活动状态时总是看起来好像没有聚焦(如上图3所示).它总是看起来发白:

DwmEnableBlurBehindWindow具有无边框和不可调整大小的窗口

这是我如何设置玻璃样式的一些示例代码:

public MainWindow()
{
    InitializeComponent();

    WindowStyle = WindowStyle.None;
    ResizeMode = ResizeMode.NoResize;

    Height = 200;

    Background = Brushes.Transparent;
    Loaded += MainWindow_Loaded;
}
void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
    var windowInteropHelper = new WindowInteropHelper(this);
    var handle = windowInteropHelper.Handle;
    var mainWindowSrc = HwndSource.FromHwnd(handle);

    if (mainWindowSrc != null)
        if (mainWindowSrc.CompositionTarget != null)
            mainWindowSrc.CompositionTarget.BackgroundColor = Color.FromArgb(0, 0, 0, 0);
    var glassParams = new DwmApi.DwmBlurbehind
    {
        dwFlags = DwmApi.DwmBlurbehind.DWM_BB_ENABLE, …
Run Code Online (Sandbox Code Playgroud)

c# wpf aero aero-glass

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

在启动窗口中处理WM_NCACTIVATE会阻止所有其他窗口

我试图保持一个特定的WPF窗口焦点,这意味着它不应该在失去焦点时改变窗口样式(例如像标准的Windows任务栏).为了实现这一点,我钩到WndProc检查是否WM_NCACTIVATEWM_ACTIVATE设置在假(wParam == 0),然后将消息标记为handled = true;从不活动块窗口.这是一些示例代码:

void Window_Loaded(object sender, RoutedEventArgs e)
{
    var source = HwndSource.FromHwnd(new WindowInteropHelper(this).Handle);
    if (source != null) source.AddHook(WndProc);
}

private const uint WM_NCACTIVATE = 0x0086;
private const int WM_ACTIVATE = 0x0006;
private IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled)
{
    if (msg == WM_NCACTIVATE)
    {
        if (wParam == new IntPtr(0))
            handled = true;
    }
    if (msg == WM_ACTIVATE)
    {

        if (wParam == …
Run Code Online (Sandbox Code Playgroud)

c# wpf winapi wndproc

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

标签 统计

c# ×4

wpf ×2

aero ×1

aero-glass ×1

gdi ×1

image ×1

mono ×1

owin ×1

signalr-2 ×1

signalr.client ×1

sockets ×1

system.drawing ×1

winapi ×1

wndproc ×1