小编Aar*_*ari的帖子

我们是否需要在使用后在C#中处置或终止线程?

我有以下代码:

        public static void Send(this MailMessage email)
    {
        if (!isInitialized)
            Initialize(false);
        //smtpClient.SendAsync(email, "");
        email.IsBodyHtml = true;

        Thread mailThread = new Thread(new ParameterizedThreadStart(
            (o) => 
            {
                var m = o as MailMessage;

                SmtpClient client= new SmtpClient("smtpserveraddress");
                client.Send(m);

            }));
        mailThread.Start(email);
Run Code Online (Sandbox Code Playgroud)

我希望邮件发送在后台完成而不会干扰主线程.它完蛋后我不在乎.

我是否需要以某种方式处理已创建线程(mailThread)的处理?或者它在完成工作后会自动处理?

请不要推荐SendAsync方法.我想手动创建线程.Mail.Send只是一个示例场景.

谢谢.

c# multithreading smtpclient

34
推荐指数
2
解决办法
4万
查看次数

通过Reflection获取当前的班级成员

假设这段代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Reflection;

namespace TestFunctionality
{
  class Program
  {
    static void Main(string[] args)
    {
      // System.Reflection.Assembly.GetExecutingAssembly().Location
      Assembly assembly = Assembly.LoadFrom("c:\\testclass.dll");
      AppDomain.CurrentDomain.Load(assembly.GetName());
      var alltypes = assembly.GetTypes();
      foreach (var t in alltypes)
      {
        Console.WriteLine(t.Name);
        var methods = t.GetMethods(/*BindingFlags.DeclaredOnly*/);
        foreach (var method in methods)
        Console.WriteLine(
        "\t--> "
        +(method.IsPublic? "public ":"")
        + (method.IsPrivate ? "private" : "") 
        + (method.IsStatic ? "static " : "") 
        + method.ReturnType + " " + method.Name);
      }
      Console.ReadKey();
    } …
Run Code Online (Sandbox Code Playgroud)

c# system.reflection .net-assembly

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

在Prolog中订购字符串

我想知道如何比较两个字符串,告诉我一个字符串是否大于另一个字符串.

我不想要平等/不平等.我希望有一个很好的旧字母数字排序.

示例:'aaaa','aaad','aaab'的排序应该是:'aaaa','aaab','aaad'

如果我有原子怎么办?如何订购原子?(再次a = b或a = = b不能完成这项工作,我需要订购.)

string prolog sql-order-by

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

在 Prolog 中查找图中两个节点之间的最短路径

我想在 Prolog 中找到两个节点之间的最短路径。我想出了如何找到两个节点之间的所有路径,但不幸的是以下代码陷入了循环:

arc(a,b).
arc(b,a).
arc(b,c).
arc(c,b).
arc(c,d).
arc(d,c).

path(X,Y,[arc(X,Y)]) :-
   arc(X,Y).
path(X,Y,[arc(X,Z)|P]) :-
   arc(X,Z),
   path(Z,Y,P).
Run Code Online (Sandbox Code Playgroud)

运行的代码是:

?- path(a,c,R).
R = [arc(a, b), arc(b, c)] ;
R = [arc(a, b), arc(b, a), arc(a, b), arc(b, c)] ;
R = [arc(a, b), arc(b, a), arc(a, b), arc(b, a), arc(a, b), arc(b, c)] 
....
Run Code Online (Sandbox Code Playgroud)

所以,我的问题是:如何获取所有路径而不无限循环?

在一天结束时,我会得到列表的长度并找到最小值。

如果可能的话,请给出 ISO Prolog 的解决方案。

注意:这是更新的代码,我仍然有问题。显然,在检查事实而不是原子时,成员谓词不起作用。

xxx([]).

path(X,Y,[arc(X,Y)]) :-
   arc(X,Y).
path(X,Y,[arc(X,Z)|P]) :- 
        arc(X,Z)
        ,xxx(L)
        ,member(arc(X,Z),L)->
            !;
            (member(arc(Z,X),L)->
                !;
                (append(L,[arc(X,Z)],R),retract(xxx(_)),assert(xxx(R)),path(Z,Y,P))).
Run Code Online (Sandbox Code Playgroud)

我的成员谓词是:

member(X,[X|T]).
member(X,[H|T])  :-  member(X,T). 
Run Code Online (Sandbox Code Playgroud)

谢谢。

graph-theory prolog shortest-path

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

按钮onClick事件不会在Android中触发

我已经为android中的一个活动编写了以下代码:

import java.util.Date;
import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.TextView;
import android.support.v4.app.NavUtils;

public class Step1Activity extends Activity {

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_step1);
    Button calculateButton = (Button) findViewById(R.id.buttonCalculate);
    calculateButton.setOnClickListener(new OnClickListener() {

      public void onClick(View v) {

        EditText fullname= (EditText)findViewById(R.id.editText1); // !!Breakpoint!!
        DatePicker birthdate= (DatePicker)findViewById(R.id.datePickerDateofBirth);
        int test=birthdate.getYear();
        TextView result=(TextView)findViewById(R.id.textView2);

        result.setText(new Integer( lifepath).toString()+" "+new Integer(test).toString());

      }
    });
  }

  @Override
  public boolean onCreateOptionsMenu(Menu menu) { …
Run Code Online (Sandbox Code Playgroud)

android textview settext onclicklistener

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