小编Sam*_*r83的帖子

如何捕获ThreadAbort?

我有一个函数,我调用thread.abort来杀死一个线程.我知道这不是最好的做法,但是我在一个dll中调用一个函数,它在该函数中基本上有一个无限循环,所以我终止该线程的唯一方法就是调用一个线程中止.我可以调用一个thread.join,然后我的gui会卡住.我已经在我的表单应用程序和该线程中完成了一个catch,但是当我调用thread.abort函数时会抛出一个异常,这个异常会被其中一个地方的try块捕获,但我的应用程序仍然崩溃.

处理threadAbort的正确方法是什么,因此它不会使我的应用程序崩溃.

c# multithreading exception-handling

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

如何使用c#在单个字符串中对多个项目进行正则表达式?

我的字符串是以下格式:

"[Item1],[Item2],[Item3],..."
Run Code Online (Sandbox Code Playgroud)

我希望能够获得item1,item2,item3等.

我正在尝试以下grep表达式:

MatchCollection matches = Regex.Matches(query, @"\[(.*)\]?");
Run Code Online (Sandbox Code Playgroud)

但是,不是匹配每个项目,而是得到 "item1][item2][..."

我做错了什么?

c# regex

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

使用泛型将孩子投射到父母身上

Class a <T> {
   public T j;
}

class b:a <int> {

}
Run Code Online (Sandbox Code Playgroud)

如果这不是通用的,那么您可以执行以下操作:

a foo = new b();
Run Code Online (Sandbox Code Playgroud)

无论如何还要对通用案例做同样的事情吗?

有没有更好的方法呢?

c# generics polymorphism

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

如何将libsndfile编译成项目?

我正在尝试使用libsndfile.我对g ++也不是很好.安装libsndfile的方法似乎是使用"make install".我真的可以这样做,所以我在一个目录中编译它.

我试图在这里编译教程:http:
//parumi.wordpress.com/2007/12/16/how-to-write-wav-files-in-c-using-libsndfile/

当我尝试以下内容时:

g++  -Isrc/ test.c
Run Code Online (Sandbox Code Playgroud)

我明白了:

/tmp/ccq5fhbT.o: In function SndfileHandle::SndfileHandle(char const*, int, int, int, int)':
test.c:(.text._ZN13SndfileHandleC1EPKciiii[SndfileHandle::SndfileHandle(char const*, int, int, int, int)]+0xf4): undefined reference to sf_open'
/tmp/ccq5fhbT.o: In function SndfileHandle::write(float const*, long)':
test.c:(.text._ZN13SndfileHandle5writeEPKfl[SndfileHandle::write(float const*, long)]+0x27): undefined reference to sf_write_float'
/tmp/ccq5fhbT.o: In function SndfileHandle::SNDFILE_ref::~SNDFILE_ref()':
test.c:(.text._ZN13SndfileHandle11SNDFILE_refD1Ev[SndfileHandle::SNDFILE_ref::~SNDFILE_ref()]+0x20): undefined reference to sf_close'
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

当我尝试执行以下操作时:

g++ -lsndfile -Isrc/ test.c
Run Code Online (Sandbox Code Playgroud)

我明白了

/usr/bin/ld: cannot find -lsndfile
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

我不确定我需要给g ++什么开关.

g++ libsndfile

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