小编Nic*_*kon的帖子

线程无法访问该对象

我宣布了一个字段:

WriteableBitmap colorBitmap;
Run Code Online (Sandbox Code Playgroud)

然后我创建了一个简单的线程来执行某些操作

private void doSomething()
{
    // ... bla bla bla
    colorBitmap = new WriteableBitmap(/* parameters */);
    myImage.Source = colorBitmap; // error here:S
}
Run Code Online (Sandbox Code Playgroud)

在Windows_Loaded事件中,我声明并启动了一个新线程:

private void window_Loaded(object sender, RoutedEventArgs e)
{
    Thread th = new Thread(new ThreadStart(doSomething));
    th.Start();
}
Run Code Online (Sandbox Code Playgroud)

问题是我无法改变myImage的来源.我有一个错误,如:

InvalidOperationException未处理调用线程无法访问此对象,因为另一个线程拥有它.

我试图使用Dispatcher.Invoke,但它没有帮助...

Application.Current.Dispatcher.Invoke((Action)delegate
{
    myImage.Source = colorBitmap;
});
Run Code Online (Sandbox Code Playgroud)

我正在寻找一些答案,但从来没有像我一样找到这个案子.any1帮助我理解如何解决这样的问题(我最近遇到了同样的问题,但我无法调用该方法,因为其他线程拥有它).

c# wpf multithreading invalidoperationexception

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

获取给定XmlNode的所有后代

我想让所有的孩子从给定节点到叶子而不使用递归.那可能吗?我知道如何在LINQ to XML中执行此操作,但是在XmlNode:S中存在一些问题

c# xml xmlnode

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

ListView行号没有绑定

我一直想知道在WPF中是否可以创建一个ListView没有绑定到IEnumerable<>索引属性的行号?也许制作一个自动增加行号的模板?如何实现?

在某些情况下它可能很有用(例如,当您使用以令人不愉快的形式返回大量数据的外部类时 - 如字典或某些自定义类).

c# wpf

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

TextChanged事件之前的KeyDown

我想知道之前是否可以进行KeyDown事件触发TextChanged

我已经添加了这两个简单的事件TextBox,现在我想检查是否Delete按下了键.如果是<do nothing>,如果没有<so something>.我已经创建了一个boolean字段,如果我按下就"记住" Delete,但问题是KeyDown触发后TextChanged,所以它不起作用......

c# wpf events

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

动画圆形路径上的圆圈

我在屏幕中央有一个对象(图像).现在我想围绕这个对象动画一些圆圈.实现这项任务的最佳想法是什么?我应该使用任何专用JS的动画库吗?

在此输入图像描述

html javascript css jquery jquery-animate

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

在控件焦点上打开WPF中的AutoCompleteBox

我正试图打开System.Windows.Controls.AutoCompleteBox控制焦点.事件触发但没有任何反应:/当我开始输入一些文本时,自动完成框工作正常.我究竟做错了什么?

AutoCompleteBox box = new AutoCompleteBox();
box.Text = textField.Value ?? "";
box.ItemsSource = textField.Proposals;
box.FilterMode = AutoCompleteFilterMode.Contains;
box.GotFocus += (sender, args) =>
    {
        box.IsDropDownOpen = true;
    };
Run Code Online (Sandbox Code Playgroud)

c# wpf autocomplete

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

C#LINQ GroupBy具有NULL值

我有一个有一些日期的对象:

class MyObj
{
   public DateTime? Date {get; set;}
}
Run Code Online (Sandbox Code Playgroud)

你可以看到它Date是可空的.是否可以使用LINQ's GroupBy方法List<MyObj>按日期分组,包括nulls?

得到类似的东西:{elements_with_date_1, elements_with_date_2, ..., elements_with_no_date}

c# linq group-by

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

当 TypeScript 中的泛型类型不匹配时不会出现错误

configure()我想知道为什么我可以在方法中提供与我的方法不同的通用接口class?在第一个no error示例中,我提供了IType<Args1>泛型类型MyClass,然后我可以简单地通过IArgs2缺少 prop 来覆盖它,并且我没有收到任何错误。有什么方法可以确保类型完全相同吗?

interface IArgs1 {
  a: string;
  b: string;
}

interface IArgs2 {
  a: string;
}

interface IArgs3 {
  d: string;
}

interface IType<T> {
  configure(args: T): void
}

// no error - even if 'b' is missing from IArgs2
class Class implements IType<IArgs1> {
  configure(args: IArgs2) {}
}

// error - because it's missing all IArgs1 attributes
class MyClass implements IType<IArgs1> {
  configure(args: IArgs3) {}
}

Run Code Online (Sandbox Code Playgroud)

typescript

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

带有大文件的GZipStream不能正常工作

我想压缩一些非常大的GML文件(1-10GB).我为此编写了一个方法,但它不能很好地工作.如果我使用7-zip for Windows(或其他东西)解压缩它,我得到的文件看起来很糟糕(它还没有完成,XML还没有完成)......我看不到我在做什么错误...

private void CompressFile()
{
    string outputPath = Path.Combine(Path.ChangeExtension(_gmlPath, ".gz"));

    var buffer = new byte[1024 * 64];
    using (var compressing = new GZipStream(File.OpenWrite(outputPath), CompressionMode.Compress))
    {
        using (var file = File.OpenRead(_gmlPath))
        {
            var bytesRead = file.Read(buffer, 0, buffer.Length);
            while (bytesRead != 0)
            {
                compressing.Write(buffer, 0, buffer.Length);
                bytesRead = file.Read(buffer, 0, buffer.Length);
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

[编辑]

其他问题:如何指定/更改文件名,在内部压缩GZ?它的名称与输入的名称相同,但没有.gml扩展名:S(输入中有)...

c# compression gzip

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

LINQ用于删除从列表中的其他元素启动的元素

我有一个List<string>包含一些路径的列表.

C:\Dir\Test\
C:\MyDir\
C:\YourDir\
C:\Dir\
Run Code Online (Sandbox Code Playgroud)

我想浏览所有元素(使用LINQ)并删除从列表中的其他元素开始的条目.

在我的例子C:\Dir\Test\开头C:\Dir\- 所以我想删除C:\Dir\Test\.

c# linq

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