Since I was corrected and this is indeed not an exact duplicate of the parallel computations question, I will reproduce here [my implementation of abortable table][1], to have it here on SE:


 ClearAll[abortableTable];
 SetAttributes[abortableTable, HoldAll];
 abortableTable[expr_, iter : {_Symbol, __} ..] :=
 Module[{indices, indexedRes, sowTag, depth = Length[Hold[iter]] - 1},
 Hold[iter] /. {sym_Symbol, __} :> sym /. Hold[syms__] :> (indices := {syms});
 indexedRes = Replace[#, {x_} :> x] &@ Last@Reap[
 CheckAbort[Do[Sow[{expr, indices}, sowTag], iter], Null],sowTag];
 AbortProtect[
 SplitBy[indexedRes, Array[Function[x, #[[2, x]] &], {depth}]][[##,1]] & @@ 
 Table[All, {depth + 1}]
 ]];

the usage is 

 tt=abortableTable[Pause[0.1*i];i,{i,50}]

 (* {1,2,3,4,5,6,7,8} *)

(I aborted the computation after some time). Generally, `abortableTable` accepts the same iterator syntax as `Table`, and can work with multiple dimensions. The details on how this works can be found in the linked discussion.


 [1]: http://stackoverflow.com/questions/6470625/mathematica-table-function/6471024#6471024